-1

我有一个场景,在 fork 之后,孩子使用 excele() 命令执行

一个 linux 系统命令,它在其中执行一个小的 shell 脚本。

之后父母只做一个 wait() 。所以我的问题是,父母是否执行

在子进程执行的 execle() 之后等待?

谢谢斯米塔

4

2 回答 2

0

我不太确定您在问什么,但是父级处于 wait() 系统调用中,它将在那里等待,直到任何子级退出。还有其他的东西,比如信号,也会把它带出出口。

您必须在子进程中小心,以免因错误而意外陷入父代码。

于 2012-10-06T12:27:35.023 回答
0

这(一个子进程execve在它的父进程之后做一些事情fork,并且父进程wait- 或者 -waitpid处理它)是一个非常常见的场景;大多数贝壳都是这样工作的。您可以strace -f使用交互式bashshell 来了解更多信息,或者研究简单 shell 的源代码,例如sash

请注意,在fork(2)系统调用之后,父进程和子进程可能会同时运行(例如同时运行,尤其是在多核机器上)。

于 2012-10-06T12:27:59.670 回答