Modulo modulo base

Modulo child_process

Modulo di gestione dei processi figlio

Metodo di riferimento:

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

Quando si crea un processo figlio, l'opzione options.stdio viene utilizzata per configurare la pipeline stabilita tra il processo padre e il processo figlio. Per impostazione predefinita, stdin, stdout e stderr del processo figlio verranno reindirizzati aChildProcessI flussi stdin, stdout e stderr corrispondenti sull'oggetto. Equivale a impostare options.stdio su ['pipe','pipe','pipe'].

Per comodità, options.stdio può essere una delle seguenti stringhe:

  • 'pipe': equivalente a ['pipe','pipe','pipe'] (valore predefinito).
  • 'ignora': equivalente a ['ignora', 'ignora', 'ignora'].
  • 'inherit': equivalente a ['inherit','inherit','inherit'] o [0, 1, 2].
  • 'pty': equivalente a ['pty','pty','pty']. Windows non è supportato.

Altrimenti, il valore di options.stdio deve essere un array (dove ogni indice corrisponde a un descrittore di file nel processo figlio). I descrittori di file 0, 1 e 2 corrispondono rispettivamente a stdin, stdout e stderr. È possibile designare altri descrittori di file per creare altre pipe tra il processo padre e il processo figlio. Il valore può essere uno dei seguenti:

  1. 'pipe': crea una pipe tra il processo figlio e il processo padre. Il genitore della pipe è esposto al processo genitore come attributo stdio[fd] sull'oggetto child_process. Le pipe create per i descrittori di file 0, 1 e 2 possono essere utilizzate anche come stdin, stdout e stderr, rispettivamente.
  2. 'ignore': indica a fibjs di ignorare il descrittore di file nel processo figlio. Sebbene fibjs aprirà sempre i descrittori di file 0, 1 e 2 per i suoi processi generati, l'impostazione del descrittore di file su "ignore" consente a fibjs di aprire /dev/null e collegarlo al descrittore di file del processo figlio.
  3. 'inherit': passa lo stdio corrispondente al o dal processo padre. Nelle prime tre posizioni, questo equivale aprocess.stdin, process.stdout con process.stderr. In qualsiasi altra posizione, equivale a "ignorare".
  4. 'pty': il processo figlio verrà eseguito in un terminale virtuale. Al momento sono validi solo stdin e stdout.
  5. Intero positivo: il valore intero verrà interpretato come descrittore di file attualmente aperto nel processo padre. È condiviso con il processo figlio, simile alla condivisione<Stream> La via dell'oggetto. I socket in entrata non sono supportati su Windows.
  6. null o undefined: usa il valore predefinito. Per i descrittori di file stdio 0, 1 e 2 (in altre parole, stdin, stdout e stderr), verranno create le pipe. Per il descrittore di file 3 e versioni successive, l'impostazione predefinita è "ignora".
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] });

Per gli utenti che utilizzano nodejs contemporaneamente, prestare attenzione

  • fibjs lo child_process.exec(command, args)stesso nome api nodejs funzioni simili, ma in Windows, non esegue automaticamente il comando cmd.exe come parametro dell'ambiente di esecuzione;
  • Il child_process.[spawn|exec|execFile|run] di fibjs è una funzione di stile asincrono integrata di sincronizzazione/callback:
    • Se l'ultimo parametro non è una funzione, è sincrono
    • Se una funzione viene passata come ultimo parametro, è asincrona;
  • Il risultato restituito di fibjs child_process.[exec|execFile] è un oggetto, che è completamente diverso dall'oggetto restituito dall'API nodejs con lo stesso nome
  • fibjs child_process.runnon è un'API corrispondente nel nodejs

Funzione statica

spawn

Rilascia un processo figlio con il comando dato

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

Parametri di chiamata:

  • command: String, specifica il comando da eseguire
  • args: Array, specifica l'elenco dei parametri della stringa
  • options: Oggetto, specificare i parametri di creazione

Risultato di ritorno:

Il contenuto supportato dalle opzioni è il seguente:

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 }

Rilascia un processo figlio con il comando dato

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

Parametri di chiamata:

  • command: String, specifica il comando da eseguire
  • options: Oggetto, specificare i parametri di creazione

Risultato di ritorno:

Il contenuto supportato dalle opzioni è il seguente:

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

Esegue un comando nella shell e bufferizza l'output.Se eseguita in modalità callback, la funzione restituirà l'oggetto processo figlio

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

Parametri di chiamata:

  • command: String, specifica il comando da eseguire
  • options: Oggetto, specificare i parametri di creazione

Risultato di ritorno:

  • (Variant stdout, Variant stderr), restituisce il contenuto di output stdio del processo figlio

Il contenuto supportato dalle opzioni è il seguente:

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

Esegue direttamente il file specificato e memorizza l'output nel buffer.Quando viene eseguita in modalità callback, la funzione restituirà l'oggetto processo figlio

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

Parametri di chiamata:

  • command: String, specifica il comando da eseguire
  • args: Array, specifica l'elenco dei parametri della stringa
  • options: Oggetto, specificare i parametri di creazione

Risultato di ritorno:

  • (Variant stdout, Variant stderr), restituisce il contenuto di output stdio del processo figlio

Il contenuto supportato dalle opzioni è il seguente:

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 }

Esegue direttamente il file specificato e memorizza l'output nel buffer.Quando viene eseguita in modalità callback, la funzione restituirà l'oggetto processo figlio

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

Parametri di chiamata:

  • command: String, specifica il comando da eseguire
  • options: Oggetto, specificare i parametri di creazione

Risultato di ritorno:

  • (Variant stdout, Variant stderr), restituisce il contenuto di output stdio del processo figlio

Il contenuto supportato dalle opzioni è il seguente:

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

Esegui un modulo nel processo figlio

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

Parametri di chiamata:

  • module: String, specifica il comando da eseguire
  • args: Array, specifica l'elenco dei parametri della stringa
  • options: Oggetto, specificare i parametri di creazione

Risultato di ritorno:

Il contenuto supportato dalle opzioni è il seguente:

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 }

Esegui un modulo nel processo figlio

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

Parametri di chiamata:

  • module: String, specifica il comando da eseguire
  • options: Oggetto, specificare i parametri di creazione

Risultato di ritorno:

Il contenuto supportato dalle opzioni è il seguente:

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

Esegue direttamente il file specificato e restituisce exitCode.Se eseguita in modalità callback, la funzione restituirà l'oggetto processo figlio

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

Parametri di chiamata:

  • command: String, specifica il comando da eseguire
  • args: Array, specifica l'elenco dei parametri della stringa
  • options: Oggetto, specificare i parametri di creazione

Risultato di ritorno:

  • Integer, Restituisce l'exitCode del processo figlio

Il contenuto supportato dalle opzioni è il seguente:

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 }

Esegue direttamente il file specificato e restituisce exitCode.Se eseguita in modalità callback, la funzione restituirà l'oggetto processo figlio

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

Parametri di chiamata:

  • command: String, specifica il comando da eseguire
  • options: Oggetto, specificare i parametri di creazione

Risultato di ritorno:

  • Integer, Restituisce l'exitCode del processo figlio

Il contenuto supportato dalle opzioni è il seguente:

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 }