popen
和proc_open
的文档分别提到pclose
和proc_close
。
为什么是这样? 为什么我不能启动流程并使其终止独立于父流程?
例如,在父进程中发生致命错误的情况下,这将非常有用。
这会产生一个问题如果父级退出而未调用pclose
或proc_close
会发生什么。我希望子进程是孤立的,但是例如管道会发生什么。
编辑:对popen
和proc_open
进行的一些测试似乎表明,PHP会在终止时终止子进程,无论是通过调用exit
还是在致命的错误。
编辑:上下文的简短摘要: 为了监控Web应用程序*,我需要一个“服务器”进程,它接收来自一个或多个“客户端”进程的短消息。在某些情况下,必须在程序运行时启动新服务器。为了使这项工作独立于调用的起源(例如HTTP请求),我希望客户端启动此过程。因为(a)服务器可能连接到多个客户端,(b)它必须响应客户端崩溃,我需要它独立于启动它的客户端终止。
*这是一个已经在使用的非常大的系统,因此我无法改变其结构。