首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >execve :将execve调用转换为fork

execve :将execve调用转换为fork
EN

Stack Overflow用户
提问于 2013-03-25 14:18:35
回答 3查看 271关注 0票数 1

我有一个execve系统调用,用另一个程序覆盖我当前的程序。代码运行良好,但我的要求是使用fork系统调用来更改这个execve系统调用。我正在尝试下面这样的东西:

代码语言:javascript
复制
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调用使用新的进程覆盖当前进程,因此不存在父进程/子进程的问题。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-25 14:27:37

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

如果以上两种情况都不需要,您可以退出父进程。init将重新定义orphaned进程的父进程,因此不会有任何负面影响。

票数 0
EN

Stack Overflow用户

发布于 2013-03-25 14:24:48

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

票数 0
EN

Stack Overflow用户

发布于 2013-03-25 14:34:23

代码语言:javascript
复制
 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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15608780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档