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 次 |
最近记录: |