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

作者: doom8199 (~口卡口卡 修~)   2013-03-27 18:04:21
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 也不是我寫的)
感謝~

Links booklink

Contact Us: admin [ a t ] ucptt.com