【发布时间】:2014-10-21 23:52:56
【问题描述】:
在以下代码中:
int main ( int argc, char *argv[] ) {
int i, pid, status;
for(i = 0; i < atoi(argv[1]); i++) {
pid = fork();
if(pid < 0) {
printf("Error occured");
exit(1);
} else if (pid == 0) {
status = system("./frun test.txt 1");
if (status != 0)
printf("ERROR, exited with %d\n", status);
else
printf("SUCCESS, exited with %d\n", status); // 0
exit(0);
} else {
wait(NULL);
}
}
return 0;
}
我正在使用 system() 来运行一个名为“frun”的程序 我的问题是 - 我将如何更改代码以使用 exec() 系列函数之一?
我的主要问题是我需要获取程序的退出代码,而我找不到使用 exec() 的方法,而 system() 只是返回退出状态。
【问题讨论】:
-
这个问题似乎是题外话,因为它是关于说明标准手册已经完美记录的内容。
-
您需要使用
fork(),exec*()函数之一,以及wait()或waitpid()。 -
@YemSalat:这不仅仅是一个简单的改变。这些东西相当微妙,如果你想自己做这一切,你需要清楚 Posix 流程模型是如何工作的。乔纳森说正确的入口点,但这不是在公园里散步。预计会遇到僵尸,孤儿,蒙面人的信号停止,并被管道杀死很多。
-
@Trey,谢谢!已编辑。