je fais quelque chose comme ce qui suit:Pourquoi mon gestionnaire de signal HUP ne met-il pas à jour la variable globale en Perl?
J'exécuter un script Perl qui a les éléments suivants:
# 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";
J'envoyer HUP à ce processus perl. Je trouve que quelquefois faux est imprimé bien que chaque "HUP reçu" soit également imprimé; , c'est-à-dire bien que le gestionnaire de signal soit appelé, la variable globale n'est pas modifiée.
Je ne suis pas familier avec les problèmes de concurrence en Perl, alors s'il vous plaît me guider avec cela.
Vous pourriez ajouter qu'il y aurait eu un avertissement si les avertissements avaient été activés. – ysth