我有一个 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 调用用一个新进程覆盖当前进程,因此不存在父/子进程的问题。