當前位置: 首頁> 函數類別大全> 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() 等待進程結束並獲取返回值。

同類函數
  • 執行外部程序並顯示輸出 system

    system

    執行外部程序並顯示輸出
  • 獲取由proc_open() 函數打開的進程的信息 proc_get_status

    proc_get_status

    獲取由proc_open()函數打開的進
  • 執行一個命令,並且打開用來輸入/輸出的文件指針 proc_open

    proc_open

    執行一個命令,並且打開用來輸入/輸出的文
  • 執行外部程序並顯示原始輸出 passthru

    passthru

    執行外部程序並顯示原始輸出
  • 通過shell 環境執行命令,並且將完整的輸出以字符串的方式返回 shell_exec

    shell_exec

    通過shell環境執行命令,並且將完整的
  • shell 元字符轉義 escapeshellcmd

    escapeshellcmd

    shell元字符轉義
  • 殺死一個proc_open打開的進程 proc_terminate

    proc_terminate

    殺死一個proc_open打開的進程
  • 關閉由proc_open() 打開的進程並且返回進程退出碼 proc_close

    proc_close

    關閉由proc_open()打開的進程並
熱門文章