Разветвите два процесса и убейте второго, когда первый будет сделан - PullRequest
5 голосов
/ 23 апреля 2010

Я хочу создать bash-скрипт, который запустит два процесса и убьет второй процесс, когда первый будет сделан. Вот пример:

#fork first process
producer&

#fork second process
consumer&

#wait for producer to finish
...

#kill the consumer
...

У меня такое чувство, что это может показаться уродливым, но есть очень простое решение. Пожалуйста, помогите мне заполнить пробелы.

Ответы [ 2 ]

12 голосов
/ 23 апреля 2010
foo & pid_foo=$!
bar & pid_bar=$!

wait $pid_foo
kill $pid_bar

Но, возможно, вы могли бы просто запустить foo | bar (если это работает с обработкой stdin / stdout).

3 голосов
/ 23 апреля 2010
#!/bin/bash 

#enable job control in script
set -m

producer &

consumer &

fg %1

kill %2
...