什么是从另一个shell 等待一个特定的PID的最好的方式(即不循环)最好的办法
其实我用这个解决方案(不一样,如果根工作是老板):
while kill -0 $pid > /dev/null 2>&1
do
echo "waiting $pid"
sleep 10
done
替代(不与僵尸突未)
工作什么是从另一个shell 等待一个特定的PID的最好的方式(即不循环)最好的办法
其实我用这个解决方案(不一样,如果根工作是老板):
while kill -0 $pid > /dev/null 2>&1
do
echo "waiting $pid"
sleep 10
done
替代(不与僵尸突未)
工作我很伤心,没有循环显然没有解决,没有“事件”过程API。
我的首选解决方案是
while [ -e /proc/$pid ]
do
echo "waiting $pid"
sleep 10
done
你不能wait
如果你不是它的父进程。如果你真的想办法在另一个shell中得到信息,你可以将它周围像这样:
mkfifo process_done_fifo
do_your_job &
pid=$!
wait $pid
echo $pid > process_done_fifo
而在另一个shell:
while true; do
read pid < process_done_fifo
if [ $pid = $pid_you_are_waiting_for ]; then
break
fi
done
嘛,还是有一个循环,而不是轮询一个。
感谢您的想法。但似乎很复杂。 – Indent
每个解决方案都需要使用一个循环(即使它看起来没有),如果你有什么工作,那么它不会是资源密集型的,所以我会坚持下去。 – 123
https://unix.stackexchange.com/questions/169898/what-does-kill-0-do ==> Arf,kill -0 does not for root process – Indent
check for/proc/$ pid' then ,如果它不在那里,那么这个过程就是死的。尽管如此,仍然需要循环。 – 123