Vedo in molti software legacy e tutorial difettosi su Internet che raccomandano di utilizzare exit(-1), return -1o simili per rappresentare "terminazione anomala". Il problema è che, almeno in POSIX, -1non è mai stato e non è un codice di stato valido. man 3 exitillustra che exit()restituisce il valore di status & 0377al genitore, il che significa che -1diventa 255. Sui sistemi non POSIX, EXIT_FAILUREè consigliato per la portabilità. Ma non vedo mai "-1 significa terminazione anomala" in combinazione con "EXIT_FAILURE potrebbe essere qualcosa di diverso da 1", indicando che credono chiaramente che "-1" sia convenzionale anche su sistemi non POSIX.
Ecco un esempio di una domanda StackOverflow che lo perpetua. Il software "unrealircd" è anche un esempio di un programma che utilizza exit(-1)per terminare il programma. In pratica, ciò rende difficile interfacciarsi con systemd.
Da dove viene questo anti-pattern? È valido in qualche contesto?
unsigned char.
charpoiché il suo intervallo di valori è compreso tra -128 e 127. Inoltre, ho già dichiarato che "-1" viene convertito in "255" nel mio corpo di domanda .