Hes*_*aod 4 shell process exit
如果我有一个名为myprogram包含的文件
sleep 200
date
Run Code Online (Sandbox Code Playgroud)
在后台运行:
$ sh myprogram &
Run Code Online (Sandbox Code Playgroud)
我想知道myprogram使用wait命令何时完成
$ cat >notify
wait PID
echo "Program completed"
$ sh notify &
Run Code Online (Sandbox Code Playgroud)
PID是第三个命令给出的进程ID,我的问题是在最后一个命令后立即在终端上打印消息“程序完成”,为什么等待不等待?,我使用的是 ubuntu 11.10
所有涉及的“&”都破坏了父子关系。
内置函数显然基于的wait(2)系统调用wait仅适用于调用wait(2).
当您调用 时sh myprogram &,您将sh作为交互式 shell 的子进程运行。
当您调用 时sh notify &,它sh是交互式 shell 的子级。
所以第二个sh与第一个没有直接的父关系sh,并且wait不起作用。
如果您调用sh myprogram &; sh notify;任何一个,这甚至都不起作用,因为该wait命令是由交互式 shell 的子进程调用的。
对我有用的是:sh myprogram &; wait 该wait命令导致交互式 shell(sh显式调用的父级)挂起直到sh退出。
| 归档时间: |
|
| 查看次数: |
5752 次 |
| 最近记录: |