我有一个场景,在fork之后,孩子使用excele()命令执行
一个linux系统命令,它执行一个小的shell脚本。
之后父母只做一个wait()。所以我的问题是,父母是否执行
在子进程执行的execle()之后等待吗?
由于 史密塔
答案 0 :(得分:0)
我不太确定你在问什么,但是父母正在进行wait()系统调用,它将在那里等待,直到任何一个孩子退出。还有一些其他的东西,比如信号,它也会把它带出出口。
您必须在子进程中小心,在出错时不会意外地陷入父代码。
答案 1 :(得分:0)
这是(子进程在其父execve
- ed之后执行一些fork
,并且父wait
- 或waitpid
- 这是一个非常常见的情况;大多数炮弹都是这样工作的。你可以,例如strace -f
一个交互式bash
shell,用于了解详情,或研究简单shell的源代码,例如sash
请注意,在fork(2)系统调用之后,父进程和子进程可以同时运行(例如,同时运行,尤其是在多核计算机上)。