Fork : lien entre les signaux et le terminal ? - PHP - Programmation
Marsh Posté le 18-05-2016 à 14:23:30
Ca viendrait pas du fait que la variable globale $childs est vide suite à la fermeture, la première fois, du terminal ?
Edit : tous les x tours de boucle principale, affiche les principales variables du script. Je pense que tu aura des surprises...
Marsh Posté le 18-05-2016 à 14:39:25
Bonjour,
Merci pour ta réponse, mais cela ne venait pas de là.
En fait, si on commente les echo dans le signal_handler, cela fonctionne même en killant avec un autre terminal.
Le signal_handler était donc bien appelé, mais le fait d'écrire dans la sortie standard d'un daemon sans terminal semblait poser problème...
Il y a surement une trace de log quelque part de l'erreur que cela générait, mais je ne la trouve pas.
Marsh Posté le 18-05-2016 à 09:37:31
Bonjour à tous,
J'ai besoin d'un coup de main pour comprendre un comportement sur le petit script que j'ai codé ci-dessous :
Le code ci-dessus, est à copier dans un fichier test.php, puis il faut le lancer en php-cli : php test.php
Le script va créer un daemon qui aura 2 enfants.
Si on tue le daemon via un "kill -15 PID", le daemon meurt et tue ses deux enfants grâce à un "signal_handler" que j'ai configuré via "pcntl_signal".
Si en revanche vous lancez le daemon puis que vous quittez votre terminal, puis revenez avec un nouveau terminal et tuez le daemon.
Alors à ce moment la, il ne tuera pas ses deux enfants, comme si le "signal_handler" n'était plus là.
Pourtant j'ai pris soins de positionner un "posix_setsid" afin de m'affranchir de tout lien avec la session courante.
Pourriez-vous m'aider à comprendre ce comportement ?
Merci d'avance.