[問題] 子程序自動終止

作者: 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