gpt4 book ai didi

c++ - 执行 : convert execve call to fork

转载 作者:太空宇宙 更新时间:2023-11-04 14:09:09 27 4
gpt4 key购买 nike

我有一个 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 调用以保持原始流程(就像没有 fork 一样)但是父进程应该做什么 - 我应该正常退出还是我需要等待子进程退出/死亡。 execve 调用用一个新进程覆盖当前进程,因此不存在父/子进程的问题。

最佳答案

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

如果以上都不需要,可以退出父进程。 orphaned进程将由 init 重新设置父级,因此不会产生不利影响。

关于c++ - 执行 : convert execve call to fork,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15608780/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com