Разница между ошибкой и кодом возврата в Linux - PullRequest
1 голос
/ 22 октября 2019

В чем разница между errno, доступным из <errno.h>, и return code, который можно распечатать, используя echo $? в bash. Они ссылаются на один и тот же код?

1 Ответ

1 голос
/ 22 октября 2019

Код выхода процесса обычно не соответствует коду errno.

Наиболее переносимая стратегия - просто иметь 1 для выходов из-за отказа (или даже более переносимо EXIT_FAILURE, как определено в stdlib.h) и 0 для успешных выходов.

Некоторые программы используют стратегию bsd sysexits для сопоставления дополнительных условий выхода с кодами выхода.

Другие программы могут выбрать возврат errno кодов (относящихся к сбою системного вызова, который в конечном итоге привел к завершению процесса) или, например, errno+1, и вы обычно сможете вписать это в 8 битов, используемых exit, но системногошироко применяемая стратегия кода выхода или даже неисполненное соглашение, кроме нулевого кода выхода, означающего успех, и ненулевого кода выхода, означающего (своего рода) сбой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...