在c-shell中等待两个PID

时间:2013-08-07 13:07:14

标签: linux shell pid csh

以下为我效劳:

>sleep 20 &
[1] 30414
>sleep 30 &
[2] 30415
>wait $30414 $30415

这一切都可行,直到我想把它写入tmp.csh

在我的tem.csh文件中

sleep 20 &
set pid1=$!
sleep 30 &
set pid2=$!

谈到“等待”

wait $pid1 $pid2 => too many arguments
wait $pid1 => too many arguments
wait \$$pid1 => too many arguments
wait $($pid1) => Illegal variable name

我该怎么写呢?

这个问题是为了解决问题 How can I wait until specified "xterm" finished?

2 个答案:

答案 0 :(得分:1)

“wait”命令不会等待特定的PID。在CSH中尝试以下操作以等待特定的PID:

#!/bin/csh -f

sleep 30 &
set pid1 = $!
sleep 40 &
set pid2 = $!

while ( `ps -p "$pid1,$pid2" | wc -l` > 1 )
  sleep 1
end

答案 1 :(得分:1)

这在tcsh中适用于我:

#!/bin/tcsh

time
sleep 10 &
sleep 5 &
wait
time

看起来等待并没有采取任何争论,只需等待每个后退过程完成。