Sur les systèmes POSIX, de la cessation des signaux ont généralement l'ordre suivant (selon la plupart des pages de MAN et la POSIX Spec):
SIGTERM - demandez poliment à un processus à arrêter. Il prend fin normalement, le nettoyage de toutes les ressources (fichiers, sockets, les processus enfants, etc.), la suppression des fichiers temporaires et ainsi de suite.
SIGQUIT - plus énergique de la demande. Il doit mettre fin maladroit, toujours le nettoyage de ressources qui ont absolument besoin de nettoyage, mais peut-être pas supprimer les fichiers temporaires, peut-être écrire les informations de débogage quelque part, sur un système aussi un core dump sera écrit (peu importe si le signal est capté par l'application ou non).
SIGKILL - plus énergique de la demande. Le processus n'est même pas demandé de faire quoi que ce soit, mais le système sera de nettoyer le processus, si elle aime ou pas. Le plus probable d'un core dump est écrit.
Comment SIGINT entrer dans l'image? Un CLI processus se termine généralement par SIGINT lorsque l'utilisateur appuie sur CTRL+C, cependant un processus d'arrière-plan peut également être résilié par SIGINT à l'aide de TUER utilitaire. Ce que je ne peut pas voir dans les spécifications ou les fichiers d'en-tête est si SIGINT est plus ou moins énergique que SIGTERM ou si il y a une différence entre SIGINT et SIGTERM à tous.
Mise à JOUR:
La meilleure description de la résiliation signaux j'ai trouvé pour l'instant est dans la GNU LibC Documentation. Il explique très bien qu'il y a une différence entre le signal SIGTERM et SIGQUIT.
Il dit à propos de SIGTERM:
Il est normal de demander poliment un programme de cessation.
Et il dit à propos de SIGQUIT:
[...] et produit un core dump quand il termine le processus, tout comme un programme de signal d'erreur. Vous pouvez considérer cela comme une erreur de programme d'état "détecté" par l'utilisateur. [...] Certains types de nettoyages sont les meilleurs omis dans le traitement des SIGQUIT. Par exemple, si le programme crée des fichiers temporaires, il doit traiter les demandes de résiliation par la suppression temporaire les fichiers. Mais c'est mieux pour SIGQUIT de ne pas les supprimer, afin que l'utilisateur puisse les examiner à conjointement avec le core dump.
Et SIGHUP est également expliqué assez bien. SIGHUP est pas vraiment un signal d'arrêt, cela signifie juste que la "connexion" à l'utilisateur a été perdu, de sorte que l'application ne peut pas s'attendre à l'utilisateur de lire n'importe quel autre sortie (par exemple, stdout/stderr sortie) et il n'y a pas d'entrée d'attendre de l'utilisateur. Pour la plupart des applications qui signifie qu'il est mieux de cesser de fumer. En théorie, une application pourrait aussi décider qu'il passe en mode démon lorsqu'un signal SIGHUP est reçu et fonctionne désormais comme un processus d'arrière-plan, rédaction de la sortie vers un fichier journal configuré. Pour la plupart des démons déjà en cours d'exécution en arrière-plan, SIGHUP signifie généralement qu'ils doivent réexaminer leurs fichiers de configuration, donc vous l'envoyer au processus d'arrière-plan après l'édition de fichiers de configuration.
Il n'existe toutefois aucune explication utile de SIGINT sur cette page, d'autres que c'est envoyé par CTRL+C. Est-il une raison pourquoi l'un serait en mesure de gérer SIGINT d'une manière différente que SIGTERM? Si oui, pour quelle raison serait-ce et comment le traitement sera différent?