[问题] 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