简短的问题:
我想在父母那里等待孩子被某个exec电话取代,不等待终止。
我该怎么做?
(c语言,linux平台)
答案 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(sash
或bash
)的源代码。还可以使用strace
来了解shell中发生的事情。