Это не проблема порядка байтов.Порядковый номер относится к тому, как данные хранятся в памяти;на машине с прямым или прямым порядком байтов (((status) & 0xff00) >> 8)
извлекает биты с 15 по 8, т. е. с 8 по 15 младшие биты макро аргумента status
.
Документация и комментарии сбивают с толку, посколькуотносится к двум разным вещам.
Выходящий процесс возвращает код состояния.Это состояние выхода имеет тип int
в источнике (либо в качестве возвращаемого значения от main
, либо в качестве аргумента для exit
), однако значение должно быть в диапазоне от 0 до 255.
* 1012Системные вызовы * и waitpid
также предоставляют абоненту status
.Этот статус отличается;младшие 8 битов исходного состояния выхода теперь находятся в битах с 15 по 8. Я предполагаю, что в документации сказано, что WEXITSTATUS возвращает «младшие 8 битов», потому что это была упаковка состояния выхода с точки зрения процесса выхода..