На 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?
Это портативное поведение? Почему страница руководства не упоминает об этом? Какие платформы, если они не являются переносимыми, соответствуют этому поведению?
Если вы думаете об этом, там есть «форк», поэтому вы можете захотеть «WIFEXITED» и «WEXITSTATUS».
Со страницы руководства:
Функция pclose () ожидает завершения связанного процесса и возвращает состояние завершения команды, возвращенное wait4 (2).