Widzę w dużo starszego oprogramowania i złych samouczków w Internecie, które zalecamy zastosowanie exit(-1)
, return -1
lub podobny do reprezentowania „nieprawidłowe zakończenie”. Problem w tym, że przynajmniej w POSIX -1
nigdy nie był i nie jest prawidłowym kodem statusu. man 3 exit
ilustruje, że exit()
zwraca wartość elementu status & 0377
nadrzędnego, co oznacza, że -1
staje się 255
. W systemach innych niż POSIX EXIT_FAILURE
zaleca się przenośność. Ale nigdy nie widzę, że „-1 oznacza nieprawidłowe zakończenie” w połączeniu z „EXIT_FAILURE może być czymś innym niż 1”, co wskazuje, że wyraźnie wierzą, że „-1” jest konwencjonalne nawet w systemach innych niż POSIX.
Oto przykład pytania StackOverflow, które to utrwala. Oprogramowanie „unrealircd” jest także przykładem programu, który używa exit(-1)
do zakończenia programu. W praktyce utrudnia to komunikację systemd
.
Skąd wziął się ten anty-wzór? Czy jest ważny w jakimś kontekście?
unsigned char
.
char
ponieważ jego zakres wartości wynosi od -128 do 127. Ponadto stwierdziłem, że „-1” jest konwertowane na „255” w moim ciele zapytania .