Pclose () возвращает статус завершения канала, сдвинутый влево на восемь битов на всех платформах?

На Centos4 я обнаружил, что на странице man для popen () частично говорится:

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?

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

1

Решение

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

Со страницы руководства:

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

0

Другие решения


По вопросам рекламы [email protected]