我有一个场景,在 fork 之后,孩子使用 excele() 命令执行
一个 linux 系统命令,它在其中执行一个小的 shell 脚本。
之后父母只做一个 wait() 。所以我的问题是,父母是否执行
在子进程执行的 execle() 之后等待?
谢谢斯米塔
我有一个场景,在 fork 之后,孩子使用 excele() 命令执行
一个 linux 系统命令,它在其中执行一个小的 shell 脚本。
之后父母只做一个 wait() 。所以我的问题是,父母是否执行
在子进程执行的 execle() 之后等待?
谢谢斯米塔
我不太确定您在问什么,但是父级处于 wait() 系统调用中,它将在那里等待,直到任何子级退出。还有其他的东西,比如信号,也会把它带出出口。
您必须在子进程中小心,以免因错误而意外陷入父代码。
这(一个子进程execve
在它的父进程之后做一些事情fork
,并且父进程wait
- 或者 -waitpid
处理它)是一个非常常见的场景;大多数贝壳都是这样工作的。您可以strace -f
使用交互式bash
shell 来了解更多信息,或者研究简单 shell 的源代码,例如sash
请注意,在fork(2)系统调用之后,父进程和子进程可能会同时运行(例如同时运行,尤其是在多核机器上)。