我有一个execve系统调用,将我的currnt程序与另一个程序叠加。代码工作正常,但我的要求是使用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调用,以保持原始流(就像没有fork一样),但是父级应该怎么做-我应该正常退出还是需要等待子进程退出/死亡。 execve调用在当前进程上覆盖了一个新进程,因此没有父/子进程的问题。
最佳答案
如果需要知道子进程的退出状态,或者在子进程退出后需要执行某些操作,请在父进程中调用wait()
。
如果不需要以上任何一种,则可以退出父进程。 orphaned进程将由init
重新确定父级,因此不会产生不利影响。
关于c++ - execve:将execve调用转换为fork,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15608780/