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() 等待進程結束並獲取返回值。