Kap*_*hik 7 php proc-open kill-process fclose
我正在尝试使用proc_open执行一个进程.管道处理过程的I/O !!
$descriptorspec = array(
0 => array("pipe", "r"),
1 => array("pipe", "w"),
2 => array("pipe", "w")
);
Run Code Online (Sandbox Code Playgroud)
现在,实际上,我打开的"c程序"有时会卡住,我添加了一个max_time_limit检查,强制关闭进程.我已经添加了回调函数 - 即onExit - (使用"call_user_function"),以便以有效方式或强制方式处理"进程退出"时的信息.
在"退出"功能中,我正在关闭i/o管道
foreach ($pipes as $pipe) {
fclose($pipe);
}
Run Code Online (Sandbox Code Playgroud)
如果进程有一个有效的退出,上面的工作完全正常.但是,在我强行杀死我的进程的情况下,我调用proc_terminate来执行此操作.我知道进程的终止也会继续并关闭所有I/O管道,但问题是由于回调,我的"onExit"函数进程总是被调用(这就是我希望它的方式.. .as我需要做更多的处理).现在,在这种情况下,当我尝试关闭管道时,我收到以下错误:
fclose(): 18 is not a valid stream resource
Run Code Online (Sandbox Code Playgroud)
我尝试使用"ftell"来检查管道是否有效,但是这也是错误的.如何检查管道是否已经关闭?
Bar*_*art 14
如何在尝试关闭资源之前检查资源是否仍然是资源:
foreach ($pipes as $pipe) {
// Finds whether a variable is a resource
if(is_resource($pipe)) {
fclose($pipe);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12752 次 |
| 最近记录: |