这就是问题所在。此外,我所拥有的只是PID,而我运行命令的shell不一定是最初调用该进程的shell。有什么想法吗?
答案 0 :(得分:2)
这不是一种非常简洁的方法,但您可以不断向指定的pid发出kill(2)
系统调用,将零作为信号。通过将kill
设置为errno
,第一次ESRCH
未成功,您可能会认为该流程已退出。
答案 1 :(得分:2)
while ps -p $PID >/dev/null 2>&1; do sleep 1; done
或
while ps -p $PID >/dev/null 2>&1; do :; done
答案 2 :(得分:1)
您可以检查dir / proc / PID是否存在。它似乎比发送多个信号更清洁