Veo en una gran cantidad de software heredado y malos tutoriales en Internet que recomiendan usar exit(-1)
, return -1
o similar, para representar la "terminación anormal". El problema es que, al menos en POSIX, -1
nunca ha sido y no es un código de estado válido. man 3 exit
ilustra que exit()
devuelve el valor de status & 0377
al padre, lo que significa que se -1
convierte en 255
. En sistemas que no son POSIX, EXIT_FAILURE
se recomienda para la portabilidad. Pero nunca veo "-1 significa terminación anormal" junto con "EXIT_FAILURE puede ser algo distinto de 1", lo que indica que creen claramente que "-1" es convencional incluso en sistemas que no son POSIX.
Aquí hay un ejemplo de una pregunta de StackOverflow que perpetúa esto. El software "no realircd" también es un ejemplo de un programa que se utiliza exit(-1)
para finalizar el programa. En la práctica, esto dificulta la interacción con ellos systemd
.
¿De dónde vino este antipatrón? ¿Es válido en algún contexto?
unsigned char
.
char
ya que su rango de valores es -128 a 127. Además, ya dije "-1" se convierte en "255" en mi cuerpo de preguntas .