Я вижу в много унаследованного программного обеспечения и плохие учебники в Интернете , который рекомендуется использовать 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» в моем теле вопроса ,