什麼是從另一個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