C'est spécifique à l'implémentation. Vous pouvez faire ceci :
int main()
{
assert(0);
}
Puis lancez-le :
./a.out
echo $?
1 (<- ou autre)
Cela vous dira au moins à quoi vous attendre pour votre configuration. J'obtiens 134 sur quelques machines Linux avec GCC et g++.
La norme C99 (inchangée dans C11) stipule que assert
appelle abort
et le abort
stuff indique ceci à propos du code de retour :
Une forme définie par l'implémentation de l'état d'arrêt infructueux est renvoyée à l'environnement hôte au moyen de l'appel de fonction
raise(SIGABRT)
.
C'est documenté dans la section 7.2.1.1 (affirmer) et 7.20.4.1 (abandonner) de la norme C99 ici.
De nombreux systèmes UNIX renverront 128 plus le numéro de signal (SIGABRT
est le signal numéro 6) donc vous pouvez obtenir 134. Quoi que vous obteniez, cela devrait être documenté par l'implémentation C.
Par exemple, voir ici pour gcc
. Bien qu'il soit assez silencieux sur ce qui est renvoyé à l'environnement appelant. À partir des sections spécifiques ici :
Certains choix sont faits par la bibliothèque et le système d'exploitation (ou un autre environnement lors de la compilation pour un environnement autonome); reportez-vous à leur documentation pour plus de détails.
Et ici :
Le comportement de la plupart de ces points dépend de l'implémentation de la bibliothèque C et n'est pas défini par GCC lui-même.
Le glibc
aussi doco ici à la fin du programme (en particulier le bit d'état de sortie). Il mentionne des conventions mais pas de règles fermes.