Значение состояния в функции ожидания и wexitstatus

Я прочитал этот код в реализации системной функции Unix (проблема 8.22):

        int status;
        if (wait(&status) > 0) {
             if (WIFEXITED(status)) {
                 return WEXITSTATUS(status);
             } else {
                 return status;
             }
        }

Я не понимаю, для чего здесь условие if: Разве WEXITSTATUS не возвращает статус, совпадающий с ожидающим? Если нет, то в чем разница между ними?

1 ответ

Решение

status Значение - это своего рода составное значение, которое включает в себя "состояние выхода" процесса и другие биты. Из справочной страницы Linux относительно WEXITSTATUS:

Если значение WIFEXITED(stat_val) не равно нулю, этот макрос оценивается как младшие 8 битов аргумента состояния, которые дочерний процесс передал в _exit () или exit (), или значение, которое дочерний процесс возвратил из main().

Другие вопросы по тегам