Funktionsname: proc_open ()
Funktion Beschreibung: Die Funktion proc_open () führt einen Befehl aus und öffnet den für Eingabe/Ausgabe verwendeten Dateizeiger.
Anwendbare Version: Php 4> = 4.3.0, Php 5, Php 7
Syntax: Ressource Proc_open (String $ CMD, Array $ DescriptorSpec, Array & $ Pipes [, String $ CWD [, Array $ env [, array $ other_options]]]))
Parameter:
Rückgabewert: Gibt eine Prozesskennung des Ressourcentyps zurück, wenn sie erfolgreich sind, und gibt beim Fehler falsche zurück.
Beispielcode:
// 执行一个简单的命令并读取输出$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); }
In diesem Beispiel verwenden wir Proc_open (), um einen einfachen Befehl "ls -l" auszuführen und einen Dateizeiger zu verwenden, um die Ausgabe des Befehls zu lesen. Durch Einstellen des entsprechenden DescriptorSpec -Arrays können wir den Dateizeigertyp für Eingabe/Ausgabe angeben. In diesem Beispiel umleiten wir die Standardeingabe in eine Pipeline und den Standardausgang und den Standardfehler in zwei andere Pipelines. Wir verwenden dann die Funktion von Stream_Get_Contents (), um die Ausgabe des Befehls aus der Standardausgaberipeline zu lesen. Schließlich schließen wir alle Dateizeiger und verwenden proc_close (), um zu warten, bis der Prozess endet und den Rückgabewert erhält.