2014-12-12 1 views
1

я нашел на Centos4, что страница для POPEN() в частности, говорится:Завершает ли pclose() статус завершения работы трубы налево на восемь бит на всех платформах?

DESCRIPTION 
    The pclose() function shall close a stream that was opened by popen(), wait for the command to termi- 
    nate, and return the termination status of the process that was running the command language inter- 
    preter. However, if a call caused the termination status to be unavailable to pclose(), then pclose() 
    shall return -1 with errno set to [ECHILD] to report this situation. 

Однако в моем C++ приложения, когда я на самом деле выполнить код, я вижу, что статус прекращения сдвигается влево на 8 биты. Возможно, это должно отличить -1 от статуса завершения трубы от собственного состояния выхода pclose() -1?

Является ли это переносным поведением? Почему эта страница человека не упоминается? Если они не переносимы, какие платформы соответствуют этому поведению?

ответ

0

Если вы думаете об этом, там есть «вилка», поэтому вы можете захотеть «WIFEXITED» и «WEXITSTATUS».

От человека странице:

Функция pclose() ожидает соответствующего процесса прекратить и возвращает статус завершения команды, возвращаемое wait4 (2).