#c #linux #bash #unix
#c #linux #bash #unix
Вопрос:
Я работаю над проектом, в котором я должен создать свою собственную оболочку, проблема в том, что я знаю, что возвращаемое значение дочернего процесса — это число, содержащее много информации, а не только статус выхода, и для получения статуса выхода вы должны использовать макрос WEXITSTATUS, теперь я смотрю, как я могупреобразуйте простое целое число в возвращаемое значение процесса с целью использования WEXITSTATUS и получите обратно это целое число,
например: у меня есть число 258, я хочу выполнить некоторое битовое смещение, затем использовать WEXITSTATUS, чтобы получить 258, это похоже на то, что я хочу знать число, которое дает 258, когда я использую WEXITSTATUS.
Спасибо!
Комментарии:
1. 258 не помещается в один байт.
2. Для POSIX доступны только младшие 8 бит любого возвращаемого значения. 258 не поместится в 8 бит, поэтому нет числа, которое может произвести 258. POSIX говорит: «Обратите внимание, что эти 8 бит являются частью полного значения , которое используется для установки
si_status
элементаsiginfo_t
структуры, предоставляемойwaitid()
«, поэтомуwaitid()
предполагается , что оно возвращает полноеint
значение, возвращаемое при выходе из процесса, но я уверен, что Linux здесь сломан и возвращает только младшие 8 бит.3. @stark: О, дети. Раньше у нас были большие байты, которые могли содержать 258. Фактически, стандарт C все еще допускает это. Почему вы позволяете производителям уходить с рук, предоставляя вам меньшие байты? Вы должны протестовать.
4. @EricPostpischil байты должны быть достаточно большими, чтобы вместить любое число!!! Это мое требование.
5. @stark Шестидесятые были интересным временем.