[问题] 子程序自动终止

楼主: k97231 (AL)   2019-07-13 16:19:24
想问一下
如果说在script中设计一些背景执行的指令
例如
command1 &
command2 &
如何在终止(用ctrl + C)这些script后一并把这个script所触发的所有子程序杀掉
一般来说都要使用ctrl + Z 后
在kill jobs 才有办法一次杀光
但ctrl + C则会把背景指令继续放在背景后
作者: kenduest (小州)   2019-07-13 17:05:00
trap 拦截 INT 信号,用 jobs -p 列出 pid 呼叫 kill结束
作者: hijkxyzuw (i,j,k) ×(x,y,z)   2019-07-13 18:54:00
默认背景的命令会收到 sighup ,但少数程式会忽略。用 while kill %%; do true; done ,jobs 互动性有点问题,理论上 $() 或 pipe 都是开子程序进行的,但背景程序是挂在母程序下,所以 sh 是没办法用 $(jobs) 拿到母程序 jobs 的输出;除非用 jobs -p >job-list
楼主: k97231 (AL)   2019-07-16 21:53:00
感谢楼上几位 我试试看这些指令

Links booklink

Contact Us: admin [ a t ] ucptt.com