Je vois dans beaucoup de logiciels hérités et de mauvais tutoriels sur Internet qui recommandent d'utiliser exit(-1)
, return -1
ou similaire, pour représenter une «terminaison anormale». Le problème est, dans POSIX au moins, -1
n'a jamais été et n'est pas un code d'état valide. man 3 exit
illustre qui exit()
renvoie la valeur de status & 0377
au parent, ce qui signifie que -1
devient 255
. Sur les systèmes non POSIX, EXIT_FAILURE
est recommandé pour la portabilité. Mais je ne vois jamais "-1 signifie une terminaison anormale" en conjonction avec "EXIT_FAILURE peut être autre chose que 1", indiquant qu'ils croient clairement que "-1" est conventionnel même sur les systèmes non-POSIX.
Voici un exemple d'une question StackOverflow qui perpétue cela. Le logiciel "unrealircd" est également un exemple de programme utilisé exit(-1)
pour terminer le programme. En pratique, cela rend difficile l'interface avec systemd
.
D'où vient cet anti-modèle? Est-il valable dans un certain contexte?
unsigned char
.
char
puisque sa plage de valeurs est de -128 à 127. De plus, j'ai déjà déclaré que "-1" était converti en "255" dans le corps de ma question .