【发布时间】:2013-06-12 19:39:20
【问题描述】:
在 linux 中,调用 fork() 后,我的子进程将很快调用 exec。有没有办法让父进程等待()并且在子进程执行之前不做任何事情?
谢谢。
【问题讨论】:
在 linux 中,调用 fork() 后,我的子进程将很快调用 exec。有没有办法让父进程等待()并且在子进程执行之前不做任何事情?
谢谢。
【问题讨论】:
使用vfork() 代替fork()。这会导致父级暂停,直到子级退出或调用execve() 系列函数之一。
【讨论】:
没有 (API) 方法让父母知道孩子正在执行 exec()。
但是有一个很好的管道技巧:让孩子继承一个文件描述符(对于管道)并且(在 fork() 之前)为管道设置 close-on-exec 标志。当 exec() 关闭管道时,管道上的 EOF 将通知父级。
请注意,这不需要孩子的任何合作。
【讨论】: