Modulo child_process
Modulo di gestione dei processi figlio
Metodo di riferimento:
1
2var 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 corrispondenti flussi stdin, stdout e stderr 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:
- '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.
- 'ignora': 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.
- 'inherit': passa lo stdio corrispondente al o dal processo padre. Nelle prime tre posizioni, questo equivale aprocess.stdin, process.stdout insieme a process.stderr. In qualsiasi altra posizione, equivale a "ignorare".
- 'pty': il processo figlio verrà eseguito in un terminale virtuale. Al momento sono validi solo stdin e stdout.
- 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.
- 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
13const {
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.run
non è un'API corrispondente nel nodejs
Funzione statica
spawn
Rilascia un processo figlio con il comando dato
1
2
3static 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, specifica i parametri di creazione
Risultato di ritorno:
- ChildProcess, Restituisce l'oggetto processo figlio
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
2static ChildProcess child_process.spawn(String command,
Object options = {});
Parametri di chiamata:
- command: String, specifica il comando da eseguire
- options: Oggetto, specifica i parametri di creazione
Risultato di ritorno:
- ChildProcess, Restituisce l'oggetto processo figlio
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
2static (Variant stdout, Variant stderr) child_process.exec(String command,
Object options = {}) async;
Parametri di chiamata:
- command: String, specifica il comando da eseguire
- options: Oggetto, specifica 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
3static (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, specifica 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
2static (Variant stdout, Variant stderr) child_process.execFile(String command,
Object options = {}) async;
Parametri di chiamata:
- command: String, specifica il comando da eseguire
- options: Oggetto, specifica 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
3static 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, specifica i parametri di creazione
Risultato di ritorno:
- ChildProcess, Restituisce l'oggetto processo figlio
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
2static ChildProcess child_process.fork(String module,
Object options = {});
Parametri di chiamata:
- module: String, specifica il comando da eseguire
- options: Oggetto, specifica i parametri di creazione
Risultato di ritorno:
- ChildProcess, Restituisce l'oggetto processo figlio
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
3static 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, specifica 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
2static Integer child_process.run(String command,
Object options = {}) async;
Parametri di chiamata:
- command: String, specifica il comando da eseguire
- options: Oggetto, specifica 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
}