【发布时间】:2015-07-02 01:13:47
【问题描述】:
我正在尝试在 Qt 中将外部可执行文件(下面的代码)作为单独的进程运行。
test.c:
#include <stdio.h>
int main () {
FILE *f;
f = fopen("a.txt", "w");
fprintf(f, "1\n");
fclose(f);
return 1;
}
在 Qt 中我有:
QProcess* process = new QProcess();
QString program = "/Users/myUser/Desktop/a.out";
process->execute(program);
我已经阅读了 execute()、start() 和 startDetached() 之间的区别,据我了解,我想使用 execute(),因为我希望运行外部可执行文件的进程在继续执行之前完成主要过程。但是,我已经尝试了所有三个,希望找到一个包含文本“1”的文件 a.txt,但它不存在。关于它为什么不起作用的任何帮助或建议?谢谢!
【问题讨论】:
-
QProcess::execute是一个静态函数,因此您不必创建QProcess的新实例。只是为了澄清-您是否希望调用程序在继续执行之前等待进程完成?您确定可执行文件的路径正确吗?您从哪个目录运行父程序(a.txt可能在该目录中,如果它与a.out的目录不同)。 -
如果进程成功运行,它将在
QDir::current()中创建输出。我很确定你没有在那里寻找输出文件。 -
@Sam,是的,我希望调用程序仅在子进程完全完成后才继续执行。我只是使用文件系统搜索来查找 a.txt,因为它不在我期望的任何地方。我很欣赏这些建议!非常感谢您提供更多帮助。
-
在您的测试程序中,尝试写入特定路径(例如 /tmp/a.txt)。