GNU/Linux >> Tutoriels Linux >  >> Linux

Quel code d'erreur renvoie un processus renvoyant des erreurs de segmentation ?

Lorsqu'un processus est terminé, le shell ne stocke qu'un code de retour de 8 bits, mais définit le bit haut si le processus s'est terminé de manière anormale. Mais comme votre processus se termine par une erreur de segmentation, le signal envoyé est généralement SIGSEGV (référence mémoire invalide) qui a une valeur de 11.

Donc parce que votre processus s'est terminé anormalement, vous avez un 128 et puis vous ajoutez la valeur du signal qui a terminé le processus qui était 11, vous obtenez 139.


L'appel système pertinent (donnant l'état d'un processus terminé) est waitpid(2). Le 139 est pour WIFSIGNALED et WTERMSIG etc... Sous Linux les bits réels sont décrits dans le fichier interne /usr/include/bits/waitstatus.h qui est inclus à partir de <sys/wait.h> en-tête

Le wait , waitpid call est standard dans POSIX, tout comme les noms de macro (comme WTERMSIG etc...). L'implémentation réelle de ces macros et les numéros de signal réels, d'où le code donné par le shell, sont spécifiques à l'implémentation.

La page de manuel signal(7) de Linux donne le nombre de signaux.


Linux
  1. Qu'est-ce que Echo $ ? Faire??

  2. Que renvoie la commande Ls -al .* ?

  3. Que retourne malloc(0) ?

  4. Qu'est-ce que cela signifie de dire que le noyau Linux est préemptif ?

  5. Qu'est-ce que :-!! en code C ?

Que signifie la sortie de Ps ?

Qu'est-ce que cette statistique de processus indique ?

Qu'est-ce que la table des processus Linux ? En quoi cela consiste?

Que signifie __init dans le code du noyau Linux ?

quels tueurs de processus Linux a-t-il?

Un processus peut-il avoir un propriétaire ? Qu'est-ce que ça veut dire?