等孩子高管

时间:2014-04-18 07:23:12

标签: c linux exec fork

简短的问题:

我想在父母那里等待孩子被某个exec电话取代,不等待终止

我该怎么做?

(c语言,linux平台)

1 个答案:

答案 0 :(得分:1)

您不能在父母那里等待孩子做一些exec,除非有一些关于IPC的约定,例如决定在exec之前pipe(7)发送一些内容(在孩子中)。您将在pipe(2)之前设置fork(2)。您也可以使用特定于Linux的eventfd(2)来进行此类IPC。

fork(2)之后和任何exec运行之前(在子进程中)与父代码相同的代码。因此,您需要实施此类传统通信。

顺便说一下,一般来说,子进程在fork之后和exec之前没有做很多事情,所以等待exec发生是没用的....在不太可能的情况下会发生错误 - 包括exec的失败 - 您只需_exit(通常使用退出代码,如127)。

你可以考虑ptrace(2)PTRACE_SYSCALL ...)但我不这样做。

阅读Advanced Linux Programming并研究一些免费软件shell(sashbash)的源代码。还可以使用strace来了解shell中发生的事情。