Vedo in molti software legacy e cattivi tutorial su Internet che raccomandano di usare exit(-1) , return -1 o simili per rappresentare "terminazione anomala". Il problema è che, almeno in POSIX, -1 non è mai stato e non è un codice di stato valido. man 3 exit illustra che exit() restituisce il valore di status & 0377 al genitore, ovvero che -1 diventa 255 . Sui sistemi non POSIX, è consigliato EXIT_FAILURE per la portabilità. Ma non vedo mai "-1 significa terminazione anomala" in congiunzione con "EXIT_FAILURE può essere qualcosa di diverso da 1", indicando che chiaramente credono che "-1" sia convenzionale anche su sistemi non POSIX.
Ecco un esempio di domanda StackOverflow che perpetua questo. Il software "unrealircd" è anche un esempio di un programma che usa exit(-1) per terminare il programma. In pratica, ciò rende difficile l'interfacciamento con systemd .
Da dove viene questo anti-pattern? È valido in qualche contesto?