[問題] How to kill/send sig to all processes

看板Perl作者 (~口卡口卡 修~)時間11年前 (2013/03/27 18:04), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
As title 我想做一個機制,就是當程式 (main function) 執行太久 就把所有的 process 都關掉 上網搜尋一些 sample code 後, 目前寫法如下: ==== sub alarmTest { my $time_out = 10; local $SIG{ALRM} = sub {alarm 0; die 'TIMEOUT'}; eval { alarm $time_out; &main(); alarm 0; }; if ($@ and $@ =~ m!TIMEOUT!) { # do post-processing code } } ==== 但有個問題 那就是 main() 這個副常式裏頭有用 system call 來執行其它 scripts 而這些 scripts 裏頭會 create 出新的 process 做事情 不確定是不是這個緣故 當我執行 alarmTest() 後,主程式可以順利停掉 但由 system call 裏頭所衍伸出來的 child process 會繼續跑 QQ 想請問有沒有方法能強迫這些 process 終止,或是導到其它 subroution 因為自己不想動到 scripts 裏頭的東西 (code 也不是我寫的) 感謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 175.98.124.34
文章代碼(AID): #1HKiGd88 (Perl)