Modulo modulo base

Modulo Child_Process

Modulo di gestione del sottoprocesso

Citazione:

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 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:

  1. '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.
  2. '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.
  3. '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".
  4. 'PTY': il processo figlio verrà eseguito in un terminale virtuale. Al momento solo stdin e stdout sono validi.
  5. 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.
  6. 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 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] });

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.runnon ha API corrispondente in Nodejs

funzione statica

spawn

Pubblica un processo figlio con il comando fornito

1 2 3
static 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:

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 2
static 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:

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 2
static (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 3
static (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 2
static (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 3
static (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 2
static (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 3
static 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:

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 2
static 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:

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 3
static 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 2
static 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. }