proc_open
执行一个命令,并且打开用来输入/输出的文件指针
函数名称:proc_open()
函数描述:proc_open() 函数执行一个命令,并且打开用来输入/输出的文件指针。
适用版本:PHP 4 >= 4.3.0, PHP 5, PHP 7
语法:resource proc_open ( string $cmd , array $descriptorspec , array &$pipes [, string $cwd [, array $env [, array $other_options ]]] )
参数:
返回值:成功时返回一个资源类型的进程标识符,失败时返回 FALSE。
示例代码:
// 执行一个简单的命令并读取输出
$descriptorspec = array(
0 => array("pipe", "r"), // 标准输入
1 => array("pipe", "w"), // 标准输出
2 => array("pipe", "w") // 标准错误
);
$process = proc_open('ls -l', $descriptorspec, $pipes);
if (is_resource($process)) {
// 读取输出
echo stream_get_contents($pipes[1]);
// 关闭文件指针
fclose($pipes[0]);
fclose($pipes[1]);
fclose($pipes[2]);
// 等待进程结束,并获取返回值
$return_value = proc_close($process);
}
该示例中,我们使用 proc_open() 执行了一个简单的命令 "ls -l",并使用了文件指针来读取命令的输出。通过设置适当的 descriptorspec 数组,我们可以指定输入/输出的文件指针类型。在这个例子中,我们将标准输入重定向到一个管道,将标准输出和标准错误重定向到另外两个管道。然后,我们使用 stream_get_contents() 函数从标准输出管道中读取命令的输出。最后,我们关闭所有文件指针,并使用 proc_close() 等待进程结束并获取返回值。