Modul Basismodul

Modul child_process

Modul zur Verwaltung von untergeordneten Prozessen

Referenzmethode:

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 zwischen dem übergeordneten Prozess und dem untergeordneten Prozess eingerichtete Pipeline zu konfigurieren. Standardmäßig werden stdin, stdout und stderr des untergeordneten Prozesses umgeleitet anChildProcessDie entsprechenden stdin-, stdout- und stderr-Streams für das Objekt. Dies entspricht dem Setzen von options.stdio auf ['pipe','pipe','pipe'].

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

  • 'pipe': entspricht ['pipe','pipe','pipe'] (Standardwert).
  • 'ignore': äquivalent zu ['ignore','ignore','ignore'].
  • 'erben': äquivalent zu ['erben','erben','erben'] oder [0, 1, 2].
  • 'pty': entspricht ['pty','pty','pty']. Windows wird nicht unterstützt.

Andernfalls muss der Wert von options.stdio ein Array sein (wobei jeder Index einem Dateideskriptor im Kindprozess entspricht). Die Dateideskriptoren 0, 1 und 2 entsprechen jeweils stdin, stdout und stderr. Andere Dateideskriptoren können bestimmt werden, um andere Pipes zwischen dem Elternprozess und dem Kindprozess zu erzeugen. Der Wert kann einer der folgenden sein:

  1. 'pipe': Erstellen Sie eine Pipe zwischen dem Kindprozess und dem Elternprozess. Das Elternteil der Pipe wird dem Elternprozess als das stdio[fd]-Attribut des child_process-Objekts offengelegt. Die für die Dateideskriptoren 0, 1 und 2 erstellten Pipes können auch als stdin, stdout bzw. stderr verwendet werden.
  2. 'ignore': Weist fibjs an, den Dateideskriptor im Kindprozess zu ignorieren. Obwohl fibjs immer die Dateideskriptoren 0, 1 und 2 für seine erzeugten Prozesse öffnet, ermöglicht es fibjs, den Dateideskriptor auf 'ignore' zu setzen, /dev/null zu öffnen und an den Dateideskriptor des Kindprozesses anzuhängen.
  3. 'inherit': Übergibt das entsprechende stdio an oder vom Elternprozess. In den ersten drei Positionen entspricht diesprocess.stdin, process.stdout mit process.stderr. In jeder anderen Position ist es gleichbedeutend mit „ignorieren“.
  4. 'pty': Der Kindprozess wird in einem virtuellen Terminal ausgeführt. Derzeit sind nur stdin und stdout gültig.
  5. Positive Integer: Der Integer-Wert wird als aktuell im Elternprozess geöffneter Dateideskriptor interpretiert. Es wird mit dem Kindprozess geteilt, ähnlich wie beim Teilen<Stream> Der Weg des Objekts. Eingehende Sockets werden unter Windows nicht unterstützt.
  6. null oder undefiniert: Verwenden Sie den Standardwert. Für die stdio-Dateideskriptoren 0, 1 und 2 (also stdin, stdout und stderr) werden Pipes erstellt. Für Dateideskriptor 3 und höher ist die Standardeinstellung 'ignore'.
1 2 3 4 5 6 7 8 9 10 11 12 13
const { spawn } = require('child_process'); // 子进程使用父进程的 stdio。 spawn('prg', [], { stdio: 'inherit' }); // 衍生的子进程只共享 stderr。 spawn('prg', [], { stdio: ['pipe', 'pipe', process.stderr] });

Für Benutzer, die gleichzeitig nodejs verwenden, beachten Sie bitte

  • fibjs mit dem child_process.exec(command, args)gleichen Namen api nodejs ähnliche Funktionen, aber unter Windows wird der Befehl cmd.exe nicht automatisch als Ausführungsumgebungsparameter verwendet;
  • Der child_process.[spawn|exec|execFile|run] von fibjs ist eine in Sync/Callback integrierte Funktion im asynchronen Stil:
    • Wenn der letzte Parameter keine Funktion ist, ist er synchron
    • Wird als letzter Parameter eine Funktion übergeben, ist sie asynchron;
  • Das Rückgabeergebnis von fibjs child_process.[exec|execFile] ist ein Objekt, das sich vollständig von dem Objekt unterscheidet, das von der nodejs-API mit demselben Namen zurückgegeben wird
  • fibjs ist child_process.runkeine entsprechende API in der nodejs

Statische Funktion

spawn

Geben Sie einen Kindprozess mit dem angegebenen Befehl frei

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

Aufrufparameter:

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

Ergebnis zurückgeben:

  • ChildProcess, Rückgabe des untergeordneten Prozessobjekts

Der von Optionen unterstützte Inhalt ist wie folgt:

1 2 3 4 5 6 7 8 9 10
{ "cwd": "", // 子进程的当前的工作目录,缺省使用当前目录 "stdio": Array | String, // 子进程 stdio 配置 "env": {}, // 环境变量的键值对 "detached": false, // 子进程将会变成一个进程组的领导者,缺省为 false "uid": 0, // 设置用户进程的ID "gid": 0, // 设置进程组的ID "windowsVerbatimArguments": false, // 在 Windows上不执行引号或转义参数。 在 Unix 上被忽略。 当指定外壳且为 CMD 时,此选项将自动设置为true,缺省为 false "windowsHide": false // 隐藏通常在Windows系统上创建的子进程控制台窗口,缺省为 false }

Geben Sie einen Kindprozess mit dem angegebenen Befehl frei

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

Aufrufparameter:

  • command: String, geben Sie den auszuführenden Befehl an
  • options: Objekt, Erstellungsparameter angeben

Ergebnis zurückgeben:

  • ChildProcess, Rückgabe des untergeordneten Prozessobjekts

Der von Optionen unterstützte Inhalt ist wie folgt:

1 2 3 4 5 6 7 8 9 10
{ "cwd": "", // 子进程的当前的工作目录,缺省使用当前目录 "stdio": Array | String, // 子进程 stdio 配置 "env": {}, // 环境变量的键值对 "detached": false, // 子进程将会变成一个进程组的领导者,缺省为 false "uid": 0, // 设置用户进程的ID "gid": 0, // 设置进程组的ID "windowsVerbatimArguments": false, // 在 Windows上不执行引号或转义参数。 在 Unix 上被忽略。 当指定外壳且为 CMD 时,此选项将自动设置为true,缺省为 false "windowsHide": false // 隐藏通常在Windows系统上创建的子进程控制台窗口,缺省为 false }

exec

Führen Sie einen Befehl in der Shell aus und puffern Sie die Ausgabe. Bei Ausführung im Callback-Modus gibt die Funktion das untergeordnete Prozessobjekt zurück

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

Aufrufparameter:

  • command: String, geben Sie den auszuführenden Befehl an
  • options: Objekt, Erstellungsparameter angeben

Ergebnis zurückgeben:

  • (Variant stdout, Variant stderr), gibt den stdio-Ausgabeinhalt des Kindprozesses zurück

Der von Optionen unterstützte Inhalt ist wie folgt:

1 2 3 4 5 6 7 8 9 10
{ "cwd": "", // 子进程的当前的工作目录,缺省使用当前目录 "env": {}, // 环境变量的键值对 "encoding": "utf8", // 指定返回结果的编码,缺省为 utf8 "detached": false, // 子进程将会变成一个进程组的领导者,缺省为 false "uid": 0, // 设置用户进程的ID "gid": 0, // 设置进程组的ID "windowsVerbatimArguments": false, // 在 Windows上不执行引号或转义参数。 在 Unix 上被忽略。 当指定外壳且为 CMD 时,此选项将自动设置为true,缺省为 false "windowsHide": false // 隐藏通常在Windows系统上创建的子进程控制台窗口,缺省为 false }

execFile

Führen Sie die angegebene Datei direkt aus und puffern Sie die Ausgabe.Wenn die Funktion im Callback-Modus 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: String, geben Sie den auszuführenden Befehl an
  • args: Array, geben Sie die Liste der String-Parameter an
  • options: Objekt, Erstellungsparameter angeben

Ergebnis zurückgeben:

  • (Variant stdout, Variant stderr), gibt den stdio-Ausgabeinhalt des Kindprozesses zurück

Der von Optionen unterstützte Inhalt ist wie folgt:

1 2 3 4 5 6 7 8 9 10
{ "cwd": "", // 子进程的当前的工作目录,缺省使用当前目录 "env": {}, // 环境变量的键值对 "encoding": "utf8", // 指定返回结果的编码,缺省为 utf8 "detached": false, // 子进程将会变成一个进程组的领导者,缺省为 false "uid": 0, // 设置用户进程的ID "gid": 0, // 设置进程组的ID "windowsVerbatimArguments": false, // 在 Windows上不执行引号或转义参数。 在 Unix 上被忽略。 当指定外壳且为 CMD 时,此选项将自动设置为true,缺省为 false "windowsHide": false // 隐藏通常在Windows系统上创建的子进程控制台窗口,缺省为 false }

Führen Sie die angegebene Datei direkt aus und puffern Sie die Ausgabe.Wenn die Funktion im Callback-Modus 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: String, geben Sie den auszuführenden Befehl an
  • options: Objekt, Erstellungsparameter angeben

Ergebnis zurückgeben:

  • (Variant stdout, Variant stderr), gibt den stdio-Ausgabeinhalt des Kindprozesses zurück

Der von Optionen unterstützte Inhalt ist wie folgt:

1 2 3 4 5 6 7 8 9 10
{ "cwd": "", // 子进程的当前的工作目录,缺省使用当前目录 "env": {}, // 环境变量的键值对 "encoding": "utf8", // 指定返回结果的编码,缺省为 utf8 "detached": false, // 子进程将会变成一个进程组的领导者,缺省为 false "uid": 0, // 设置用户进程的ID "gid": 0, // 设置进程组的ID "windowsVerbatimArguments": false, // 在 Windows上不执行引号或转义参数。 在 Unix 上被忽略。 当指定外壳且为 CMD 时,此选项将自动设置为true,缺省为 false "windowsHide": false // 隐藏通常在Windows系统上创建的子进程控制台窗口,缺省为 false }

fork

Führen Sie ein Modul im Kindprozess aus

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

Aufrufparameter:

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

Ergebnis zurückgeben:

  • ChildProcess, Rückgabe des untergeordneten Prozessobjekts

Der von Optionen unterstützte Inhalt ist wie folgt:

1 2 3 4 5 6 7 8 9 10
{ "cwd": "", // 子进程的当前的工作目录,缺省使用当前目录 "stdio": Array | String, // 子进程 stdio 配置 "env": {}, // 环境变量的键值对 "detached": false, // 子进程将会变成一个进程组的领导者,缺省为 false "uid": 0, // 设置用户进程的ID "gid": 0, // 设置进程组的ID "windowsVerbatimArguments": false, // 在 Windows上不执行引号或转义参数。 在 Unix 上被忽略。 当指定外壳且为 CMD 时,此选项将自动设置为true,缺省为 false "windowsHide": false // 隐藏通常在Windows系统上创建的子进程控制台窗口,缺省为 false }

Führen Sie ein Modul im Kindprozess aus

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

Aufrufparameter:

  • module: String, geben Sie den auszuführenden Befehl an
  • options: Objekt, Erstellungsparameter angeben

Ergebnis zurückgeben:

  • ChildProcess, Rückgabe des untergeordneten Prozessobjekts

Der von Optionen unterstützte Inhalt ist wie folgt:

1 2 3 4 5 6 7 8 9 10
{ "cwd": "", // 子进程的当前的工作目录,缺省使用当前目录 "stdio": Array | String, // 子进程 stdio 配置 "env": {}, // 环境变量的键值对 "detached": false, // 子进程将会变成一个进程组的领导者,缺省为 false "uid": 0, // 设置用户进程的ID "gid": 0, // 设置进程组的ID "windowsVerbatimArguments": false, // 在 Windows上不执行引号或转义参数。 在 Unix 上被忽略。 当指定外壳且为 CMD 时,此选项将自动设置为true,缺省为 false "windowsHide": false // 隐藏通常在Windows系统上创建的子进程控制台窗口,缺省为 false }

run

Führen Sie die angegebene Datei direkt aus und geben Sie exitCode zurück.Wenn die Funktion im Callback-Modus 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: String, geben Sie den auszuführenden Befehl an
  • args: Array, geben Sie die Liste der String-Parameter an
  • options: Objekt, Erstellungsparameter angeben

Ergebnis zurückgeben:

  • Integer, Gibt den exitCode des Kindprozesses zurück

Der von Optionen unterstützte Inhalt ist wie folgt:

1 2 3 4 5 6 7 8 9
{ "cwd": "", // 子进程的当前的工作目录,缺省使用当前目录 "env": {}, // 环境变量的键值对 "detached": false, // 子进程将会变成一个进程组的领导者,缺省为 false "uid": 0, // 设置用户进程的ID "gid": 0, // 设置进程组的ID "windowsVerbatimArguments": false, // 在 Windows上不执行引号或转义参数。 在 Unix 上被忽略。 当指定外壳且为 CMD 时,此选项将自动设置为true,缺省为 false "windowsHide": false // 隐藏通常在Windows系统上创建的子进程控制台窗口,缺省为 false }

Führen Sie die angegebene Datei direkt aus und geben Sie exitCode zurück.Wenn die Funktion im Callback-Modus 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: String, geben Sie den auszuführenden Befehl an
  • options: Objekt, Erstellungsparameter angeben

Ergebnis zurückgeben:

  • Integer, Gibt den exitCode des Kindprozesses zurück

Der von Optionen unterstützte Inhalt ist wie folgt:

1 2 3 4 5 6 7 8 9
{ "cwd": "", // 子进程的当前的工作目录,缺省使用当前目录 "env": {}, // 环境变量的键值对 "detached": false, // 子进程将会变成一个进程组的领导者,缺省为 false "uid": 0, // 设置用户进程的ID "gid": 0, // 设置进程组的ID "windowsVerbatimArguments": false, // 在 Windows上不执行引号或转义参数。 在 Unix 上被忽略。 当指定外壳且为 CMD 时,此选项将自动设置为true,缺省为 false "windowsHide": false // 隐藏通常在Windows系统上创建的子进程控制台窗口,缺省为 false }