我正在尝试处理线程内的超时。我的脚本有4个线程,每个线程都需要执行命令,如果时间过长,就杀死命令进程。
我正在做的是:
my $pid;
if (!($pid = fork))
{
my $pid2;
if (!($pid2 = fork))
{
exec_cmd $command;
}
local $SIG{ALRM} = sub {kill 9, $pid2;};
alarm $timeout;
waitpid $pid2, 0;
exit(0);
}
waitpid $pid, 0;
$ret = $?;
这是在一个线程内执行的,因此当子进程退出时,其他线程仍然未加入。