Aktueller Standort: Startseite> Funktionskategorien> proc_open

proc_open

Führen Sie einen Befehl aus und öffnen Sie den Dateizeiger, der für Eingabe/Ausgabe verwendet wird
Name:proc_open
Kategorie:Programmausführung
Programmiersprache:php
Kurzbeschreibung:Führen Sie einen Befehl aus und öffnen Sie den Dateizeiger, der für Eingabe/Ausgabe verwendet wird

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:

  • CMD: Der zu ausgeführte Befehl kann ein einfacher Befehl oder ein Array sein, das Befehle und Parameter enthält.
  • DescriptorSpec: Ein Array, das Dateizeiger für Eingabe/Ausgabe enthält. Jedes Element ist ein Array, das die folgenden Schlüsselwerte enthält:
    • 0: Standardeingabe (STDIN)
    • 1: Standardausgabe (STDOut)
    • 2: Standardfehler (Stderr)
  • Rohre: Speichern Sie Arrays aller Dateizeiger für Eingabe/Ausgabe
  • CWD (optional): Das aktuelle Arbeitsverzeichnis, in dem der Befehl ausgeführt werden soll
  • env (optional): Ein Array, das zum Festlegen von Umgebungsvariablen verwendet wird
  • Other_Options (optional): Ein assoziatives Array mit zusätzlichen Optionen. Unterstützte Optionen sind:
    • Suppress_Erenrors: Deaktiviert die Sendefehlerausgabe an Standardfehlerströme. Standard ist falsch.

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.

Ähnliche Funktionen
Beliebte Artikel