Значение состояния в функции ожидания и 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().