子と親の間のシグナリングをテストするために、次のコードを記述しました。理想的には、子が親にSIGINTを与えるとき、親は新しい反復に戻ってユーザー入力を待つ必要があります。これは私がperl5.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;
}
}
}
誰かがこの問題のウォークアラウンド、または新しいイテレーションに入るように親に信号を送る他の方法を教えてください。