关于返回值
"返回已运行进程的终止状态。如果出现错误,则返回 -1。 "
以及关于退出状态的说明:"pclose() 在内部使用 waitpid(3) 系统调用实现。若要获取真正的退出状态代码,应使用 pcntl_wexitstatus() 函数。"
返回值的文档最多是误导性的。该函数与 proc_close() 一样返回
* -1 发生错误时,
* WEXITSTATUS(status) 如果 WIFEXITED(status) 为真,或
* status 如果 WIFEXITED(status) 为假,
其中 status 是 waitpid() 的 status 参数。
这使得无法区分相对正常的退出或信号终止,并将 proc_close 返回代码的值降低为二进制值(正常/出现错误)。
这可以在 ext/standard/proc_open.c 中的 proc_open_rsrc_dtor() 中看到(PHP 5.4.44、5.6.12)。
建议使用 pcntl_wexitstatus 的说明完全错误。无法使用 pcntl_wexitstatus,因为它已经被使用了。