Dans Bash, je lance un certain nombre de processus en arrière-plan et j’attends Bash au premier plan:
sleep 7 & sleep 10 & wait
(C’est en fait une simplification de ce que fait le npm script
, qui est l’application de cette question.)
Ensuite, chaque fois que je Ctrl+C
hors du processus d’ wait
, je voudrais tous les processus d’arrière-plan tué.
Est-ce possible? Comment?
Les processus d’arrière-plan sont des processus enfants du shell, mais pas des processus d’ wait
d’ wait
, il n’y a donc aucun moyen de propager un signal pour wait
un des autres processus.
Un moyen rapide et sale de tuer tous les processus en arrière-plan, que vous pouvez placer dans un script ou un alias, est
kill -INT $(jobs -l | awk '{print $2}')
kill -INT $(jobs -p)