我正在做类似以下的事情:
我运行一个 Perl 脚本,它具有以下内容:
# First i install a signal handler for HUP which sets a global flag.
$SIG{"HUP"} = sub { print "HUP received\n"; $received_hup = 1 };
# Now i wait for HUP to be received.
my $cnt = 0;
for ($cnt = 0; $received_hup != 1 and $cnt < 900; $cnt++) {
sleep(1);
}
print ($received_hup == 1) ? "true" : "false";
然后我将 HUP 发送到这个 perl 进程。
我发现有时会打印错误,尽管每次也打印“收到 HUP”;即,尽管调用了信号处理程序,但并未修改全局变量。
我不熟悉 Perl 中的并发问题,所以请指导我。