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