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アレイを設定することにより、入力/出力のファイルポインタータイプを指定できます。この例では、標準入力を1つのパイプラインにリダイレクトし、標準出力と標準誤差を他の2つのパイプラインにリダイレクトします。次に、Stream_Get_Contents()関数を使用して、標準の出力パイプラインからコマンドの出力を読み取ります。最後に、すべてのファイルポインターを閉じて、proc_close()を使用して、プロセスが終了して戻り値を取得するのを待ちます。