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