我想使用system()从C程序内部执行一些可执行文件。我想确保命令完全执行;之后,我想使用先前执行的命令的输出。例如:
{
...
...
sprintf(cmd, "./a1.out > temp.txt");
system(cmd);
fp = fopen("temp.txt", "r");
...
...
}
在此示例中,在打开文件进行读取之后,无法确保 cmd 完全执行。而且,我想确保这一点。有什么帮助吗?
答案 0 :(得分:2)
您可以使用popen()
执行命令并直接读取其输出。
fp = popen("./a1.out", "r");
if (fp) {
...
r = pclose(fp);
if (r < 0) {
/*...command exited abnormally */
}
} else {
/*...fork or pipe error */
}
如果需要,您可以选择将数据写入文件。
答案 1 :(得分:1)
我不知道您正在使用的操作系统,但在Linux下手册中说
system()通过调用/ bin / sh -c命令执行命令中指定的命令,并在命令完成后返回。
此外Posix说
在子进程终止之前,system()函数不会返回。
所以你确定命令已经完成。