Ich sehe in vielen älteren Programmen und schlechten Tutorials im Internet, dass die Verwendung von oder ähnlichem empfohlen wird exit(-1)
, return -1
um eine "abnormale Beendigung" darzustellen. Das Problem ist, zumindest in POSIX, dass es -1
noch nie einen gültigen Statuscode gab und gibt. man 3 exit
veranschaulicht, dass exit()
der Wert von status & 0377
an das übergeordnete Element zurückgegeben -1
wird , was bedeutet, dass wird 255
. Auf Nicht-POSIX-Systemen EXIT_FAILURE
wird aus Gründen der Portabilität empfohlen. Ich sehe jedoch niemals, dass "-1 bedeutet, dass eine abnormale Beendigung vorliegt" in Verbindung mit "EXIT_FAILURE kann etwas anderes als 1 sein", was darauf hinweist, dass "-1" auch auf Nicht-POSIX-Systemen eindeutig konventionell ist.
Hier ist ein Beispiel für eine StackOverflow-Frage , die dies aufrechterhält . Die Software "unrealircd" ist auch ein Beispiel für ein Programm, mit exit(-1)
dem das Programm beendet wird. In der Praxis ist es schwierig, eine Schnittstelle zu erstellen systemd
.
Woher kommt dieses Anti-Pattern? Ist es in irgendeinem Zusammenhang gültig?
unsigned char
.
char
da sein Wertebereich zwischen -128 und 127 liegt. Außerdem habe ich bereits angegeben, dass "-1" in meinem Fragekörper in "255" umgewandelt wird .