我编写了以下代码来测试孩子和父母之间的信号。理想情况下,当孩子向父母提供 SIGINT 时,父母应该在新的迭代中返回并等待用户输入。我在 perl 5.8 中观察到了这一点,但在 perl 5.6.1(我被要求使用)中,父级实际上被“杀死”了。没有下一次迭代。
my $parent_pid = $$;
$pid = fork();
if($pid == 0)
{
print "child started\n";
kill 2, $parent_pid;
}
else
{
while(1)
{
eval
{
$SIG{INT} = sub{die "GOTCHA";};
print 'inside parent'."\n";
$a = <>;
};
if($@)
{
print "got the signal!!!!\n$@\n";
next;
}
}
}
有人可以为这个问题提供一个解决方法或其他方式来向父级发出信号,以便它进入新的迭代。