在代码中的一个地方,我用 system-Call 调用了一个外部工具.我用 Wine 工作,用 C 编程。
调用是这样的:
system("blabla.exe outfile");
该命令是动态生成的,用于更改输出文件。几行之后,我尝试使用 fopen
打开生成的文件,但是 fopen
返回 NULL
。
如果我将调用更改为以下一切正常:
system("blabla.exe outfile");
Sleep(2000);
但我不喜欢等待 2 秒......而且这个解决方案非常糟糕。
我认为 system
-Call 是同步的?所以子进程及其所有 (File-)Handles 应该在 system
-Call 之后关闭,不是吗?我对此有点困惑。
谢谢
最佳答案
system
调用是同步的,根据它在执行结束后返回的手册页。我怀疑 wine 刷新文件句柄有问题。
关于c - 系统函数调用异步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6822264/