Я вижу в много унаследованного программного обеспечения и плохие учебники в Интернете , который рекомендуется использовать exit(-1)
, return -1
или сходного представлять «аварийное завершение». Проблема, по крайней мере, в POSIX, -1
никогда не была и не является допустимым кодом состояния. man 3 exit
иллюстрирует, что exit()
возвращает значение status & 0377
для родителя, что означает, что -1
становится 255
. В системах без POSIX EXIT_FAILURE
рекомендуется для переносимости. Но я никогда не вижу, что «-1 означает ненормальное завершение» в сочетании с «EXIT_FAILURE может быть чем-то отличным от 1», что указывает на то, что они явно полагают, что «-1» является обычным даже в системах, отличных от POSIX.
Вот пример вопроса StackOverflow, который увековечивает это. Программное обеспечение "unrealircd" также является примером программы, которая используется exit(-1)
для завершения программы. На практике это затрудняет взаимодействие systemd
.
Откуда взялся этот анти-паттерн? Это действительно в каком-то контексте?
unsigned char
.
char
поскольку его диапазон значений составляет от -128 до 127. Кроме того, я уже говорил, что «-1» преобразуется в «255» в моем теле вопроса ,