当前位置: 首页> 函数类别大全> proc_open

proc_open

执行一个命令,并且打开用来输入/输出的文件指针
名称:proc_open
分类:程序执行
所属语言:php
一句话介绍: 执行一个命令,并且打开用来输入/输出的文件指针

函数名称: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 ]]] )

参数:

  • cmd:要执行的命令,可以是一个简单的命令,或者一个包含命令和参数的数组。
  • descriptorspec:一个包含了用于输入/输出的文件指针的数组。每个元素是一个包含了下列键值的数组:
    • 0:标准输入(stdin)
    • 1:标准输出(stdout)
    • 2:标准错误(stderr)
  • pipes:将存储所有文件指针的数组,用于输入/输出
  • cwd(可选):要在其中执行命令的当前工作目录
  • env(可选):用于设置环境变量的数组
  • other_options(可选):一个包含额外选项的关联数组。支持的选项有:
    • suppress_errors:禁止将错误输出发送到标准错误流。默认为 false。

返回值:成功时返回一个资源类型的进程标识符,失败时返回 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() 等待进程结束并获取返回值。

同类函数
  • 执行一个外部程序 exec

    exec

    执行一个外部程序
  • 执行外部程序并显示输出 system

    system

    执行外部程序并显示输出
  • 执行一个命令,并且打开用来输入/输出的文件指针 proc_open

    proc_open

    执行一个命令,并且打开用来输入/输出的文
  • 通过 shell 环境执行命令,并且将完整的输出以字符串的方式返回 shell_exec

    shell_exec

    通过shell环境执行命令,并且将完整的
  • 更改当前进程的优先级 proc_nice

    proc_nice

    更改当前进程的优先级
  • 把字符串转码为可以在 shell 命令里使用的参数 escapeshellarg

    escapeshellarg

    把字符串转码为可以在shell命令里使用
  • 执行外部程序并显示原始输出 passthru

    passthru

    执行外部程序并显示原始输出
  • shell 元字符转义 escapeshellcmd

    escapeshellcmd

    shell元字符转义
热门文章