Modulo Child_Process
Modulo di gestione del sottoprocesso
Citazione:
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 pipe stabilita tra il processo genitore e il processo figlio. Per impostazione predefinita, STDIN, STDOUT e STDERR del bambino vengono reindirizzatiChildProcessI corrispondenti STDIN, STDOUT e STDERR fluiscono sull'oggetto. Ciò equivale all'impostazione di opzioni.stdio su ['pipe', 'pipe', 'pipe'].
Per comodità, options.stdio può essere una delle seguenti stringhe:
- 'pipe': equivalente a ['pipe', 'pipe', 'pipe'] (impostazione predefinita).
- "Ignora": equivalente a ["ignorare", "ignorare", "ignorare"].
- 'ereditare': equivalente a ['ereditare', 'ereditare', 'ereditare'] o [0, 1, 2].
- 'pty': equivalente a ['pty', 'pty', 'pty']. Windows non è supportato.
Altrimenti, il valore di Options.stdio deve essere un array (in cui ciascun 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. Altri descrittori di file possono essere specificati per creare altri tubi tra il processo genitore e il processo figlio. Il valore può essere uno dei seguenti:
- 'pipe': crea una pipe tra il processo figlio e il processo genitore. L'estremità genitore della pipe è esposta al processo genitore come attributo stdio[fd] sull'oggetto child_process. Le pipe create per i descrittori di file 0, 1 e 2 sono disponibili anche rispettivamente come stdin, stdout e stderr.
- 'ignore': indica a fibjs di ignorare i descrittori di file nei processi figli. Sebbene fibjs aprirà sempre i descrittori di file 0, 1 e 2 per i processi generati, impostando il descrittore di file su 'ignore' fa sì che fibjs apra /dev/null e lo aggiunga al descrittore di file del processo figlio.
- 'inherit': trasmette in streaming lo stdio corrispondente al o dal processo principale. Nelle prime tre posizioni, questo equivale aprocess.stdin,process.stdoutEprocess.stderr. In qualsiasi altra posizione, equivalente a "ignorare".
- 'PTY': il processo figlio verrà eseguito in un terminale virtuale. Al momento solo stdin e stdout sono validi.
- Intero positivo: il valore intero verrà interpretato come descrittore di file attualmente aperto nel processo genitore. È condiviso con il processo figlio, simile alla condivisione <Stream> Modo oggetto. Le prese in arrivo non sono supportate su Windows.
- null o indefinito: utilizzare il valore predefinito. I tubi sono creati per i descrittori di file 0, 1 e 2 di stdio (in altre parole, stdin, stdout e stderr). Per i descrittori di file 3 e oltre, il valore predefinito è "ignorare".
1
2
3
4
5
6
7
8
9
10
11
12
13const {
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]
});
Per gli utenti che utilizzano anche nodejs, tieni presente che
- La funzione dell'omonima API di fibjs
child_process.exec(command, args)
è simile a quella di nodejs, ma su Windows cmd.exe non verrà utilizzato automaticamente come ambiente di esecuzione del parametro del comando; - FIBJS'S Child_Process. [Spawn | Exec | Execfile | Run] è una funzione in stile asincrima che integra la sincronizzazione/callback:
- Se l'ultimo parametro non è una funzione, è sincronizzato
- Se una funzione viene passata come ultimo parametro, è asincrona;
- Il risultato restituito dal child_process.[exec|execFile] di fibjs è un oggetto completamente diverso dall'oggetto restituito dall'API nodejs con lo stesso nome.
- FIBJS
child_process.run
non ha API corrispondente in Nodejs
funzione statica
spawn
Pubblica un processo figlio con il comando fornito
1
2
3static ChildProcess child_process.spawn(String command,
Array args,
Object options = {});
Parametri di chiamata:
- command: Stringa, specifica il comando da eseguire
- args: Array, specifica l'elenco dei parametri String
- options: Oggetto, specifica i parametri di creazione
Risultati restituiti:
- ChildProcess, restituisce l'oggetto del processo figlio
Le opzioni supportate sono le seguenti:
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.
}
Pubblica un processo figlio con il comando fornito
1
2static ChildProcess child_process.spawn(String command,
Object options = {});
Parametri di chiamata:
- command: Stringa, specifica il comando da eseguire
- options: Oggetto, specifica i parametri di creazione
Risultati restituiti:
- ChildProcess, restituisce l'oggetto del processo figlio
Le opzioni supportate sono le seguenti:
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
Esegui un comando nella shell e memorizza nel buffer 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: Stringa, specifica il comando da eseguire
- options: Oggetto, specifica i parametri di creazione
Risultati restituiti:
- (Variant stdout, Variant stderr), restituisce il contenuto di output stdio del processo figlio
Le opzioni supportate sono le seguenti:
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
Esegue direttamente il file specificato e memorizza nel buffer l'output. Se 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: Stringa, specifica il comando da eseguire
- args: Array, specifica l'elenco dei parametri String
- options: Oggetto, specifica i parametri di creazione
Risultati restituiti:
- (Variant stdout, Variant stderr), restituisce il contenuto di output stdio del processo figlio
Le opzioni supportate sono le seguenti:
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.
}
Esegue direttamente il file specificato e memorizza nel buffer l'output. Se 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: Stringa, specifica il comando da eseguire
- options: Oggetto, specifica i parametri di creazione
Risultati restituiti:
- (Variant stdout, Variant stderr), restituisce il contenuto di output stdio del processo figlio
Le opzioni supportate sono le seguenti:
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.
}
spawnSync
Pubblica un processo figlio con il comando fornito
1
2
3static (Integer pid, NArray output, Variant stdout, Variant stderr, Integer status, Variant error) child_process.spawnSync(String command,
Array args,
Object options = {}) async;
Parametri di chiamata:
- command: Stringa, specifica il comando da eseguire
- args: Array, specifica l'elenco dei parametri String
- options: Oggetto, specifica i parametri di creazione
Risultati restituiti:
- (Pid intero, output NArray, Variant stdout, Variant stderr, Stato intero, Errore variante), restituisce il risultato dell'esecuzione del processo figlio
Le opzioni supportate sono le seguenti:
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.
}
Pubblica un processo figlio con il comando fornito
1
2static (Integer pid, NArray output, Variant stdout, Variant stderr, Integer status, Variant error) child_process.spawnSync(String command,
Object options = {}) async;
Parametri di chiamata:
- command: Stringa, specifica il comando da eseguire
- options: Oggetto, specifica i parametri di creazione
Risultati restituiti:
- (Pid intero, output NArray, Variant stdout, Variant stderr, Stato intero, Errore variante), restituisce il risultato dell'esecuzione del processo figlio
Le opzioni supportate sono le seguenti:
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.
}
fork
Esegui un modulo in un processo figlio
1
2
3static ChildProcess child_process.fork(String module,
Array args,
Object options = {});
Parametri di chiamata:
- module: Stringa, specifica il comando da eseguire
- args: Array, specifica l'elenco dei parametri String
- options: Oggetto, specifica i parametri di creazione
Risultati restituiti:
- ChildProcess, restituisce l'oggetto del processo figlio
Le opzioni supportate sono le seguenti:
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.
}
Esegui un modulo in un processo figlio
1
2static ChildProcess child_process.fork(String module,
Object options = {});
Parametri di chiamata:
- module: Stringa, specifica il comando da eseguire
- options: Oggetto, specifica i parametri di creazione
Risultati restituiti:
- ChildProcess, restituisce l'oggetto del processo figlio
Le opzioni supportate sono le seguenti:
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
Esegue direttamente il file specificato e restituisce l'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: Stringa, specifica il comando da eseguire
- args: Array, specifica l'elenco dei parametri String
- options: Oggetto, specifica i parametri di creazione
Risultati restituiti:
- Integer, restituisce l'exitCode del processo figlio
Le opzioni supportate sono le seguenti:
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.
}
Esegue direttamente il file specificato e restituisce l'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: Stringa, specifica il comando da eseguire
- options: Oggetto, specifica i parametri di creazione
Risultati restituiti:
- Integer, restituisce l'exitCode del processo figlio
Le opzioni supportate sono le seguenti:
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.
}