小编sli*_*eed的帖子

当我 Ctrl+C 时,如何杀死并等待后台进程在 shell 脚本中完成?

我正在尝试设置一个 shell 脚本,以便它运行后台进程,当我Ctrlc使用 shell 脚本时,它会杀死孩子,然后退出。

我设法想出的最好的就是这个。似乎kill 0 -INT在等待发生之前也杀死了脚本,所以 shell 脚本在孩子们完成之前就死了。

关于如何让这个 shell 脚本在发送后等待孩子们死亡的任何想法INT

#!/bin/bash
trap 'killall' INT

killall() {
    echo "**** Shutting down... ****"
    kill 0 -INT
    wait # Why doesn't this wait??
    echo DONE
}

process1 &
process2 &
process3 &

cat # wait forever
Run Code Online (Sandbox Code Playgroud)

shell bash kill signals job-control

27
推荐指数
2
解决办法
3万
查看次数

标签 统计

bash ×1

job-control ×1

kill ×1

shell ×1

signals ×1