2015-10-01 1 views
4

J'ai utilisé PHP PCNTL extension depuis un petit moment maintenant, mais ne peux pas comprendre ce que le paramètre restart_syscalls de pcntl_signal() fait. J'ai essayé de regarder autour des Internets, mais je n'ai trouvé aucune information. Toute la documentation dit est:PHP PCNTL - que fait le paramètre restart_syscalls de pcntl_signal()?

"Spécifie si le redémarrage de l'appel système doit être utilisé lorsque ce signal arrive."

Qu'est-ce que c'est «système de redémarrage de l'appel»?

Répondre

2

Supposons que vous avez programmé votre gestionnaire de signal pour arrêter un processus en utilisant des signaux comme:

  • SIGTERM: mettre fin à un processus; il peut être bloqué, manipulé et ignoré contrairement à SIGKILL.
  • SIGKILL: mettre fin immédiatement un processus
  • SIGSTOP: pour mettre en pause le processus dans son état actuel

restart_syscallsindique si l'appel de redémarrage du système doit être utilisé lorsque signo arrive. Des exemples de signo sont les trois que j'ai énumérés ci-dessus et il y a beaucoup plus.

Cela signifie, si restart_syscalls est réglé sur la valeur par défaut TRUE, cela redémarre certains appels système après un processus qui a été arrêté par un signal signo. Il redémarre l'appel système interrompu avec un argument de temps qui est correctement ajusté pour tenir compte du temps qui s'est déjà écoulé.

Je vous transmettre cet exemple très simple et claire: pcntl_wait not interrupted by SIGTERM

+1

Merci pour vos explications et liens! C'est un peu plus clair maintenant, mais honnêtement, je ne comprends toujours pas ce que "redémarrage d'appel système" est ... :(En fait, je ne comprends pas toute la notion de pourquoi un appel système devrait être redémarré, ou ce que redémarrer un appel système signifie même/implique. –