1

我有一个 execve 系统调用来将我的当前程序与另一个程序重叠。代码工作正常,但我的要求是用 fork 系统调用更改这个 execve 系统调用。我正在尝试以下内容:

pid_t child_pid;
child_pid = fork();
if(child_pid == 0) {
       if (-1 == execve(...)) //Normal previous execve call
       {
          .............
       }
}
else
{ //fork parent process
exit(0);
}

我不确定当我们用 fork 替换 execve 系统调用时,我们应该注意什么。在我的子进程中,我正在调用现有的 execve 调用以保持原始流程(就像没有分叉一样),但是父进程应该做什么 - 我应该正常退出还是需要等待子进程退出/死亡。execve 调用用一个新进程覆盖当前进程,因此不存在父/子进程的问题。

4

3 回答 3

0

如果需要知道子进程的退出状态,或者子进程退出有一些操作要执行,调用wait()父进程。

如果以上都不需要,可以退出父进程。孤立的进程将由 重新创建init,因此不会产生不利影响。

于 2013-03-25T06:27:37.080 回答
0

这取决于你。如果您不需要等待,那么您可以退出,在这种情况下子进程将成为孤立的。

于 2013-03-25T06:24:47.697 回答
0
 should I normally exit or I need to wait for the child process to exit/die

这取决于您和您的要求,如果需要,您可以使用 wait(...) 等待子进程,请查看http://publib.boulder.ibm.com/infocenter/iseries/v5r3/index.jsp ?topic=%2Fapis%2Fwait.htm

也看看http://linux.die.net/man/2/fork

于 2013-03-25T06:34:22.777 回答