Linux进程等待问题
1. 问题描述
如果我们希望等待一个进程结束之后,再开始另外一个进程,该怎么办
答案是可以使用 wait 命令,例如
1 |
|
但是 wait 是有缺陷的,其只能对子进程生效,比如
1 |
|
此时新开一个终端,输入
1 |
|
也就是说,wait只能查到本终端的子进程,别的终端运行的进程没法被wait找到
这种情况该怎么解决呢
答案是可以自己写个新的programme, 具体过程如下:
2. 利用kill的进程等待程序
2.1 kill 的特性
正常使用 kill 命令的时候,若其成功发送信号给进程,会返回程序码0,其他状态是非0
但是如果使用命令 kill -0, 则不会发送信号,并且在进程存在的时候返回0,不存在返回非0
2.2 自定义脚本函数
先创建一个脚本
1 |
|
在其中写入
1 |
|
值得注意的是,就像上述注释中写到的:
脚本中的while + 命令的判断和常规不一样
若命令的状态码是0,相当于while的条件是True,相当于0是True,非0是False (反直觉)
2.3 source
为了方便可以在 .bashrc 中 source 这个脚本,每次打开终端就能直接用我们自己写的 waitpid 函数了
1 |
|
新开一个终端
1 |
|
再新开另一个终端
1 |
|
此时可以发现,新的终端也在等待进程16002结束了,完美解决
Linux进程等待问题
https://cyandyue.github.io/2025/02/01/Linux-process-waiting/