Ответ 1
WEXITSTATUS(stat_val)
- это макрос (поэтому на самом деле он не "возвращает" что-то, а "оценивает" что-то).
Чтобы узнать, как это работает, вы можете посмотреть его в заголовках (которые должны быть #include
d via <sys/wait.h>
), которые поставляются с используемым вами C-компилятором.
Реализация этого макроса может отличаться в зависимости от C-компилятора.
Обратите внимание, что этот макрос дает нормальное значение, только если макрос WIFEXITED(stat_val)
дал вам значение, не равное 0
.
Дословно из waitpid()
спецификации POSIX:
WEXITSTATUS(stat_val)
Если значение WIFEXITED (stat_val) не равно нулю, этот макрос оценивается как младшие 8 битов аргумента состояния, которые дочерний процесс передал в _exit() или exit(), или значение дочернего процесса вернулся из Основной().
Мотивация добавления кода возврата (ов?) Конкретной программы известна только автору кода и, возможно, существующей документации.