J'ai un problème avec un script que j'ai créé. Ceci est la première fois que j'utilise le signal que je voudrais que mon script à exécuter comme un démon, donc je mis plusieurs signaux Handler pour mettre fin correctement mon script:Erreur SIG lors de la destruction globale
local $SIG{HUP} = \&StopSuperviser;
local $SIG{INT} = \&StopSuperviser;
local $SIG{QUIT} = \&StopSuperviser;
local $SIG{ILL} = \&StopSuperviser;
local $SIG{ABRT} = \&StopSuperviser;
local $SIG{TERM} = \&StopSuperviser;
Cela fonctionne correctement, mais quand j'envoie un de ces signal mon script (Crt-C, kill -15, kill -1 ...) la fonction StopSuperviser est correctement appelé mais je reçois toujours l'erreur suivante dans la sortie de mon script:
Argument "HUP" n » t numérique en opération nulle lors de la destruction globale.
J'ai cherché sur google mais je n'ai trouvé aucun problème concernant ce comportement.
Quelqu'un peut-il mettre de la lumière là-dedans?
Merci beaucoup pour votre aide
Cordialement
Florent
#Merci quatre vos réponses, voici la StopSuperviser Fonction:
sub StopSuperviser
{
print "On quite\n";
$StopAlarm = 1;
&DeleteThreadOrder($AllProcess);
foreach my $Subprocess (@$AllProcess) {
foreach my $thread (@{$Subprocess->{Thread}}) {
$thread->kill('USR1');
$thread->join();
}
}
exit;
}
J'utilise aussi le paquet suivant:
use Alarm::Concurrent;
Cela peut important de savoir, ou non :) Hope this aide :)
Merci encore pour votre réponse et aider
Cordialement
Florent
S'il vous plaît nous montrer le contenu de 'sous StopSuperviser'. – pndc
Bon point, @Peter, peut-être qu'il abuse de '$ _ [0]'. – ikegami
@ikegami C'était mon soupçon, mais nous devons voir le code pour être sûr. – pndc