分叉两个进程并在第一个进程完成时终止第二个进程

时间:2010-04-22 21:19:32

标签: bash kill

我想创建一个bash脚本,它将启动两个进程并在第一个进程完成后终止第二个进程。这是一个例子:

#fork first process
producer&

#fork second process
consumer&

#wait for producer to finish
...

#kill the consumer
...

我有一种感觉,这可能会变得丑陋,但有一个非常简单的解决方案。请帮我填空。

2 个答案:

答案 0 :(得分:12)

foo & pid_foo=$!
bar & pid_bar=$!

wait $pid_foo
kill $pid_bar

但也许您可以运行foo | bar(如果这恰好与stdin / stdout处理一起使用)。

答案 1 :(得分:3)

#!/bin/bash 

#enable job control in script
set -m

producer &

consumer &

fg %1

kill %2