使用system()从C程序运行Python程序无输出问题求助
问题分析与解决方案
你的代码核心问题是文件写入后未关闭流,导致fprintf的内容还停留在内存缓冲区,没有真正写入磁盘。当system调用Python执行文件时,读取到的可能是空文件,因此没有输出。另外代码中重复声明system函数是多余的,<stdlib.h>已经包含了它的原型。
修复步骤
- 写完文件后必须调用
fclose(pfile),强制将缓冲区内容刷入磁盘。 - 移除多余的
system函数声明。 - 增加文件打开的错误检查,避免空指针操作导致程序崩溃。
修复后的代码
#include <stdio.h> #include <stdlib.h> #include <unistd.h> int main() { FILE *pfile = fopen("execute.py", "w"); if (pfile == NULL) { perror("Failed to open file"); return 1; } fprintf(pfile, "print(\"hello world\")"); fclose(pfile); // 关键操作:确保缓冲区内容写入磁盘 system("python3 execute.py"); return 0; }
额外说明
如果不想立即关闭文件,也可以调用fflush(pfile)强制刷新缓冲区,但关闭文件是更规范、更安全的做法,能确保所有数据都被写入磁盘,同时释放文件资源。
内容的提问来源于stack exchange,提问作者Aditya Gupta
相关产品推荐
相关产品推荐

