确保proc_open将使命令行窗口在PHP中保持活动状态

时间:2010-09-01 14:11:57

标签: php command-line proc-open

在PHP中,我使用proc_open在命令行运行命令。

它需要在新的CMD窗口中打开,所以我在命令的开头加上'start'。

但是,它还需要保持打开状态才能显示结果,但实际上它会自动关闭窗口。

我尝试添加'pause',并将/ k选项添加到'保留'。但是没有工作。窗户刚刚关闭。

使用proc_open时,如何让窗口保持打开状态?

这是代码的一部分,之前填充$ cmd:

$descriptorspec = array(
  1 => array('pipe', 'w'), // stdout
  2 => array('pipe', 'w'), // stderr
);

$process = proc_open($cmd, $descriptorspec, $pipes);
if (!is_resource($process))
{
  throw new RuntimeException('Unable to execute the command.');
}

stream_set_blocking($pipes[1], false);
stream_set_blocking($pipes[2], false);

1 个答案:

答案 0 :(得分:1)

“start”将启动指定的命令然后退出。它基本上是异步的。你可能有更好的运气让你的proc_open启动一个运行批处理文件的cmd shell,并从.bat内部运行你的命令,之后你可以做一个'暂停'