Ich sehe in vielen älteren Programmen und schlechten Tutorials im Internet, dass die Verwendung von oder ähnlichem empfohlen wird exit(-1), return -1um eine "abnormale Beendigung" darzustellen. Das Problem ist, zumindest in POSIX, dass es -1noch nie einen gültigen Statuscode gab und gibt. man 3 exitveranschaulicht, dass exit()der Wert von status & 0377an das übergeordnete Element zurückgegeben -1wird , was bedeutet, dass wird 255. Auf Nicht-POSIX-Systemen EXIT_FAILUREwird 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.
charda sein Wertebereich zwischen -128 und 127 liegt. Außerdem habe ich bereits angegeben, dass "-1" in meinem Fragekörper in "255" umgewandelt wird .