2013-03-25 52 views
1

我有一个execve系统调用来覆盖我的curernt程序与另一个。代码工作正常,但我的要求是通过fork系统调用来更改此execve系统调用。我正在尝试如下:execve:将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调用来维持原始流(如果没有fork),但是父进程应该怎么做 - 我通常应该退出还是需要等待子进程退出/死亡。 execve调用将当前进程与新进程重叠,因此不存在父进程/子进程的问题。

回答

0

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

如果不需要上述任何一种,则可以退出父进程。 orphaned程序将重新编号为init,因此不会产生不利影响。

0

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