Modul Basismodul

Modul child_process

Unterprozessverwaltungsmodul

Zitat:

1 2
var child_process = require("child_process"); var child = child_process.spawn("ls");

Beim Erstellen eines untergeordneten Prozesses wird die Option options.stdio verwendet, um die Pipeline zu konfigurieren, die zwischen dem übergeordneten Prozess und dem untergeordneten Prozess eingerichtet wird. Standardmäßig werden stdin, stdout und stderr des untergeordneten Prozesses umgeleitetChildProcessDie entsprechenden stdin-, stdout- und stderr-Streams auf dem Objekt. Dies entspricht dem Festlegen von options.stdio auf ['pipe', 'pipe', 'pipe'].

Der Einfachheit halber kann options.stdio eine der folgenden Zeichenfolgen sein:

  • 'pipe': Äquivalent zu ['pipe', 'pipe', 'pipe'] (Standard).
  • 'ignorieren': Äquivalent zu ['ignorieren', 'ignorieren', 'ignorieren'].
  • 'erben': Äquivalent zu ['erben', 'erben', 'erben'] oder [0, 1, 2].
  • 'pty': Äquivalent zu ['pty', 'pty', 'pty']. Windows wird nicht unterstützt.

Andernfalls muss der Wert von options.stdio ein Array sein (wobei jeder Index einem Dateideskriptor im untergeordneten Prozess entspricht). Die Dateideskriptoren 0, 1 und 2 entsprechen jeweils stdin, stdout und stderr. Andere Dateideskriptoren können angegeben werden, um andere Pipes zwischen den Eltern- und Kindprozessen zu erstellen. Der Wert kann einer der folgenden sein:

  1. 'pipe': Erstellt eine Pipe zwischen dem untergeordneten Prozess und dem übergeordneten Prozess. Das übergeordnete Ende der Pipe wird dem übergeordneten Prozess als Attribut stdio[fd] für das Objekt child_process angezeigt. Die für die Dateideskriptoren 0, 1 und 2 erstellten Pipes sind auch als stdin, stdout bzw. stderr verfügbar.
  2. 'ignore': weist fibjs an, Dateideskriptoren in untergeordneten Prozessen zu ignorieren. Während fibjs immer die Dateideskriptoren 0, 1 und 2 für seine erzeugten Prozesse öffnet, bewirkt das Festlegen von Dateideskriptoren auf „ignorieren“, dass fibjs /dev/null öffnet und an den Dateideskriptor des untergeordneten Elements anhängt.
  3. 'erben': Streamen Sie das entsprechende stdio zum oder vom übergeordneten Prozess. In den ersten drei Positionen ist dies gleichbedeutend mitprocess.stdin,process.stdoutUndprocess.stderr. In jeder anderen Position ist es gleichbedeutend mit „Ignorieren“.
  4. 'pty': Der Unterprozess wird in einem virtuellen Terminal ausgeführt. Derzeit sind nur stdin und stdout verfügbar.
  5. Positive ganze Zahlen: Ganzzahlige Werte werden als Dateideskriptoren interpretiert, die derzeit im übergeordneten Prozess geöffnet sind. Es wird mit untergeordneten Prozessen geteilt, ähnlich wie beim Teilen von <Stream> Objektmodus. Eingehende Sockets werden unter Windows nicht unterstützt.
  6. null oder undefiniert: Verwenden Sie den Standardwert. Für die Dateideskriptoren 0, 1 und 2 von stdio (also stdin, stdout und stderr) werden Pipes erstellt. Für Dateideskriptoren 3 und höher ist die Vorgabe 'ignorieren'.
1 2 3 4 5 6 7 8 9 10 11 12 13
const { spawn } = require('child_process'); // child process uses parent's stdio spawn('prg', [], { stdio: 'inherit' }); // child process uses parent's stderr spawn('prg', [], { stdio: ['pipe', 'pipe', process.stderr] });

Für Benutzer, die gleichzeitig nodejs verwenden, aufgepasst

  • Die Funktion von child_process.exec(command, args)fibjs ähnelt der gleichnamigen API von nodejs, aber unter Windows wird cmd.exe nicht automatisch als Ausführungsumgebung des Befehlsparameters verwendet;
  • child_process.[spawn|exec|execFile|run] von fibjs ist eine Funktion im asynchronen Stil, die Synchronisation/Callback integriert:
    • Synchron, wenn das letzte Argument keine Funktion ist
    • asynchron, wenn als letztes Argument eine Funktion übergeben wird;
  • Das Rückgabeergebnis von child_process.[exec|execFile] von fibjs ist ein Objekt, das sich vollständig von dem Objekt unterscheidet, das von der nodejs-API mit demselben Namen zurückgegeben wird
  • fibjs hat keine entsprechende API child_process.runin nodejs

statische Funktion

spawn

Starten Sie einen untergeordneten Prozess mit dem angegebenen Befehl

1 2 3
static ChildProcess child_process.spawn(String command, Array args, Object options = {});

Aufrufparameter:

  • command: Zeichenfolge, gibt den auszuführenden Befehl an
  • args: Array, gibt die Liste der String-Parameter an
  • options: Objekt, gibt die Erstellungsparameter an

Rückgabeergebnis:

  • ChildProcess, gibt das untergeordnete Prozessobjekt zurück

Der unterstützte Inhalt der Optionen ist wie folgt:

1 2 3 4 5 6 7 8 9 10
{ "cwd": "", // working directory of the child process, default to current directory "stdio": Array | String, // working directory of the child process, default to current directory "env": {}, // key-value pairs of environment variables to add to the child's environment "detached": false, // child process will be a leader of a new process group, default to false "uid": 0, // configure the user identity of the process "gid": 0, // configure the group identity of the process "windowsVerbatimArguments": false, // do not execute any quote or escape processing on Windows. Ignored on Unix. When specified, the command line string is passed directly to the underlying operating system shell without any processing whatsoever. This is set to true automatically when the shell option is specified and is CMD. "windowsHide": false // hide the subprocess console window that would normally be created on Windows systems. This option has no effect on non-Windows systems. }

Starten Sie einen untergeordneten Prozess mit dem angegebenen Befehl

1 2
static ChildProcess child_process.spawn(String command, Object options = {});

Aufrufparameter:

  • command: Zeichenfolge, gibt den auszuführenden Befehl an
  • options: Objekt, gibt die Erstellungsparameter an

Rückgabeergebnis:

  • ChildProcess, gibt das untergeordnete Prozessobjekt zurück

Der unterstützte Inhalt der Optionen ist wie folgt:

1 2 3 4 5 6 7 8 9 10
{ "cwd": "", // working directory of the child process, default to current directory "stdio": Array | String, // working directory of the child process, default to current directory "env": {}, // key-value pairs of environment variables to add to the child's environment "detached": false, // child process will be a leader of a new process group, default to false "uid": 0, // configure the user identity of the process "gid": 0, // con "windowsVerbatimArguments": false, // do not execute any quote or escape processing on Windows. Ignored on Unix. When specified, the command line string is passed directly to the underlying operating system shell without any processing whatsoever. This is set to true automatically when the shell option is specified and is CMD. "windowsHide": false // hide the subprocess console window that would normally be created on Windows systems. This option has no effect on non-Windows systems. }

exec

Führt einen Befehl in der Shell aus und puffert die Ausgabe.Wenn die Funktion als Callback ausgeführt wird, gibt die Funktion das Subprozessobjekt zurück

1 2
static (Variant stdout, Variant stderr) child_process.exec(String command, Object options = {}) async;

Aufrufparameter:

  • command: Zeichenfolge, gibt den auszuführenden Befehl an
  • options: Objekt, gibt die Erstellungsparameter an

Rückgabeergebnis:

  • (Variant stdout, Variant stderr) gibt die stdio-Ausgabe des untergeordneten Prozesses zurück

Der unterstützte Inhalt der Optionen ist wie folgt:

1 2 3 4 5 6 7 8 9 10
{ "cwd": "", // working directory of the child process, default to current directory "env": {}, // key-value pairs of environment variables to add to the child's environment "encoding": "utf8", // specify the character encoding used to decode the stdout and stderr output "detached": false, // child process will be a leader of a new process group, default to false "uid": 0, // configure the user identity of the process "gid": 0, // con "windowsVerbatimArguments": false, // do not execute any quote or escape processing on Windows. Ignored on Unix. When specified, the command line string is passed directly to the underlying operating system shell without any processing whatsoever. This is set to true automatically when the shell option is specified and is CMD. "windowsHide": false // hide the subprocess console window that would normally be created on Windows systems. This option has no effect on non-Windows systems. }

execFile

Führt die angegebene Datei direkt aus und puffert die Ausgabe.Wenn die Funktion als Callback ausgeführt wird, gibt die Funktion das untergeordnete Prozessobjekt zurück

1 2 3
static (Variant stdout, Variant stderr) child_process.execFile(String command, Array args, Object options = {}) async;

Aufrufparameter:

  • command: Zeichenfolge, gibt den auszuführenden Befehl an
  • args: Array, gibt die Liste der String-Parameter an
  • options: Objekt, gibt die Erstellungsparameter an

Rückgabeergebnis:

  • (Variant stdout, Variant stderr) gibt die stdio-Ausgabe des untergeordneten Prozesses zurück

Der unterstützte Inhalt der Optionen ist wie folgt:

1 2 3 4 5 6 7 8 9 10
{ "cwd": "", // working directory of the child process, default to current directory "env": {}, // key-value pairs of environment variables to add to the child's environment "encoding": "utf8", // specify the character encoding used to decode the stdout and stderr output "detached": false, // child process will be a leader of a new process group, default to false "uid": 0, // configure the user identity of the process "gid": 0, // con "windowsVerbatimArguments": false, // do not execute any quote or escape processing on Windows. Ignored on Unix. When specified, the command line string is passed directly to the underlying operating system shell without any processing whatsoever. This is set to true automatically when the shell option is specified and is CMD. "windowsHide": false // hide the subprocess console window that would normally be created on Windows systems. This option has no effect on non-Windows systems. }

Führt die angegebene Datei direkt aus und puffert die Ausgabe.Wenn die Funktion als Callback ausgeführt wird, gibt die Funktion das untergeordnete Prozessobjekt zurück

1 2
static (Variant stdout, Variant stderr) child_process.execFile(String command, Object options = {}) async;

Aufrufparameter:

  • command: Zeichenfolge, gibt den auszuführenden Befehl an
  • options: Objekt, gibt die Erstellungsparameter an

Rückgabeergebnis:

  • (Variant stdout, Variant stderr) gibt die stdio-Ausgabe des untergeordneten Prozesses zurück

Der unterstützte Inhalt der Optionen ist wie folgt:

1 2 3 4 5 6 7 8 9 10
{ "cwd": "", // working directory of the child process, default to current directory "env": {}, // key-value pairs of environment variables to add to the child's environment "encoding": "utf8", // specify the character encoding used to decode the stdout and stderr output "detached": false, // child process will be a leader of a new process group, default to false "uid": 0, // configure the user identity of the process "gid": 0, // con "windowsVerbatimArguments": false, // do not execute any quote or escape processing on Windows. Ignored on Unix. When specified, the command line string is passed directly to the underlying operating system shell without any processing whatsoever. This is set to true automatically when the shell option is specified and is CMD. "windowsHide": false // hide the subprocess console window that would normally be created on Windows systems. This option has no effect on non-Windows systems. }

fork

Führen Sie ein Modul in einem Unterprozess aus

1 2 3
static ChildProcess child_process.fork(String module, Array args, Object options = {});

Aufrufparameter:

  • module: Zeichenfolge, gibt den auszuführenden Befehl an
  • args: Array, gibt die Liste der String-Parameter an
  • options: Objekt, gibt die Erstellungsparameter an

Rückgabeergebnis:

  • ChildProcess, gibt das untergeordnete Prozessobjekt zurück

Der unterstützte Inhalt der Optionen ist wie folgt:

1 2 3 4 5 6 7 8 9 10
{ "cwd": "", // working directory of the child process, default to current directory "stdio": Array | String, // working directory of the child process, default to current directory "env": {}, // key-value pairs of environment variables to add to the child's environment "detached": false, // child process will be a leader of a new process group, default to false "uid": 0, // configure the user identity of the process "gid": 0, // con "windowsVerbatimArguments": false, // do not execute any quote or escape processing on Windows. Ignored on Unix. When specified, the command line string is passed directly to the underlying operating system shell without any processing whatsoever. This is set to true automatically when the shell option is specified and is CMD. "windowsHide": false // hide the subprocess console window that would normally be created on Windows systems. This option has no effect on non-Windows systems. }

Führen Sie ein Modul in einem Unterprozess aus

1 2
static ChildProcess child_process.fork(String module, Object options = {});

Aufrufparameter:

  • module: Zeichenfolge, gibt den auszuführenden Befehl an
  • options: Objekt, gibt die Erstellungsparameter an

Rückgabeergebnis:

  • ChildProcess, gibt das untergeordnete Prozessobjekt zurück

Der unterstützte Inhalt der Optionen ist wie folgt:

1 2 3 4 5 6 7 8 9 10
{ "cwd": "", // working directory of the child process, default to current directory "stdio": Array | String, // working directory of the child process, default to current directory "env": {}, // key-value pairs of environment variables to add to the child's environment "detached": false, // child process will be a leader of a new process group, default to false "uid": 0, // configure the user identity of the process "gid": 0, // con "windowsVerbatimArguments": false, // do not execute any quote or escape processing on Windows. Ignored on Unix. When specified, the command line string is passed directly to the underlying operating system shell without any processing whatsoever. This is set to true automatically when the shell option is specified and is CMD. "windowsHide": false // hide the subprocess console window that would normally be created on Windows systems. This option has no effect on non-Windows systems. }

run

Führt die angegebene Datei direkt aus und gibt den exitCode zurück, wenn sie als Callback ausgeführt wird, gibt die Funktion das untergeordnete Prozessobjekt zurück

1 2 3
static Integer child_process.run(String command, Array args, Object options = {}) async;

Aufrufparameter:

  • command: Zeichenfolge, gibt den auszuführenden Befehl an
  • args: Array, gibt die Liste der String-Parameter an
  • options: Objekt, gibt die Erstellungsparameter an

Rückgabeergebnis:

  • Integer, gibt den exitCode des untergeordneten Prozesses zurück

Der unterstützte Inhalt der Optionen ist wie folgt:

1 2 3 4 5 6 7 8 9
{ "cwd": "", // working directory of the child process, default to current directory "env": {}, // key-value pairs of environment variables to add to the child's environment "detached": false, // child process will be a leader of a new process group, default to false "uid": 0, // configure the user identity of the process "gid": 0, // con "windowsVerbatimArguments": false, // do not execute any quote or escape processing on Windows. Ignored on Unix. When specified, the command line string is passed directly to the underlying operating system shell without any processing whatsoever. This is set to true automatically when the shell option is specified and is CMD. "windowsHide": false // hide the subprocess console window that would normally be created on Windows systems. This option has no effect on non-Windows systems. }

Führt die angegebene Datei direkt aus und gibt den exitCode zurück, wenn sie als Callback ausgeführt wird, gibt die Funktion das untergeordnete Prozessobjekt zurück

1 2
static Integer child_process.run(String command, Object options = {}) async;

Aufrufparameter:

  • command: Zeichenfolge, gibt den auszuführenden Befehl an
  • options: Objekt, gibt die Erstellungsparameter an

Rückgabeergebnis:

  • Integer, gibt den exitCode des untergeordneten Prozesses zurück

Der unterstützte Inhalt der Optionen ist wie folgt:

1 2 3 4 5 6 7 8 9
{ "cwd": "", // working directory of the child process, default to current directory "env": {}, // key-value pairs of environment variables to add to the child's environment "detached": false, // child process will be a leader of a new process group, default to false "uid": 0, // configure the user identity of the process "gid": 0, // con "windowsVerbatimArguments": false, // do not execute any quote or escape processing on Windows. Ignored on Unix. When specified, the command line string is passed directly to the underlying operating system shell without any processing whatsoever. This is set to true automatically when the shell option is specified and is CMD. "windowsHide": false // hide the subprocess console window that would normally be created on Windows systems. This option has no effect on non-Windows systems. }