Mòdul mòdul bàsic

mòdul fill_process

Mòdul de gestió de subprocés

Cita:

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

Quan es crea un procés fill, l'opció options.stdio s'utilitza per configurar la canonada establerta entre el procés principal i el procés fill. De manera predeterminada, es redirigeix ​​a stdin, stdout i stderr del procés fillChildProcessEls fluxos stdin, stdout i stderr corresponents a l'objecte. Això és equivalent a configurar options.stdio a ['pipe', 'pipe', 'pipe'].

Per comoditat, options.stdio pot ser una de les cadenes següents:

  • 'pipe': equivalent a ['pipe', 'pipe', 'pipe'] (per defecte).
  • 'ignorar': equivalent a ['ignorar', 'ignorar', 'ignorar'].
  • 'hereta': equivalent a ['hereta', 'hereta', 'hereta'] o [0, 1, 2].
  • 'pty': equivalent a ['pty', 'pty', 'pty']. Windows no és compatible.

En cas contrari, el valor de options.stdio ha de ser una matriu (on cada índex correspon a un descriptor de fitxer en el procés fill). Els descriptors de fitxers 0, 1 i 2 corresponen a stdin, stdout i stderr respectivament. Es poden especificar altres descriptors de fitxers per crear altres canalitzacions entre el procés pare i el procés fill. El valor pot ser un dels següents:

  1. 'pipe': creeu una canonada entre el procés fill i el procés pare. L'extrem principal de la canonada està exposat al procés pare com a atribut stdio[fd] de l'objecte child_process. Les canonades creades per als descriptors de fitxers 0, 1 i 2 també estan disponibles com a stdin, stdout i stderr respectivament.
  2. 'ignore': indica a fibjs que ignori els descriptors de fitxers als processos fills. Tot i que fibjs sempre obrirà els descriptors de fitxers 0, 1 i 2 per als seus processos generats, establir el descriptor de fitxers a "ignorar" fa que fibjs obri /dev/null i l'afegiu al descriptor de fitxers del procés fill.
  3. 'hereta': transmet l'estdio corresponent cap o des del procés pare. En les tres primeres posicions, això és equivalent aprocess.stdin,process.stdoutiprocess.stderr. En qualsevol altra posició, equivalent a 'ignorar'.
  4. 'pty': el procés fill s'executarà en un terminal virtual. En aquest moment només són vàlids stdin i stdout.
  5. Enter positiu: el valor sencer s'interpretarà com el descriptor de fitxer obert actualment al procés principal. Es comparteix amb el procés fill, de manera similar a compartir <Stream> Manera objecte. Els sòcols d'entrada no són compatibles amb Windows.
  6. nul o sense definir: utilitzeu el valor predeterminat. Les canonades es creen per als descriptors de fitxers 0, 1 i 2 de stdio (és a dir, stdin, stdout i stderr). Per als descriptors de fitxers 3 i superiors, el valor predeterminat és "ignora".
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 als usuaris que també utilitzen nodejs, tingueu en compte que

  • La funció de l'API de fibjs child_process.exec(command, args)amb el mateix nom és similar a la de nodejs, però a Windows, cmd.exe no s'utilitzarà automàticament com a entorn d'execució del paràmetre d'ordre;
  • Child_process de fibjs.[spawn|exec|execFile|run] és una funció d'estil asíncrona que integra sincronització/callback:
    • Si l'últim paràmetre no és una funció, es sincronitza
    • Si es passa una funció com a darrer paràmetre, és asíncrona;
  • El resultat de retorn de child_process de fibjs.[exec|execFile] és un objecte, que és completament diferent de l'objecte retornat per l'API nodejs amb el mateix nom.
  • fibjs child_process.runno té cap API corresponent a nodejs

funció estàtica

spawn

Publiqueu un procés fill amb l'ordre donada

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

Paràmetres de trucada:

  • command: String, especifica l'ordre a executar
  • args: Matriu, especifica la llista de paràmetres de cadena
  • options: Objecte, especifica els paràmetres de creació

Resultats de retorn:

Les opcions admeses són les següents:

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. }

Publiqueu un procés fill amb l'ordre donada

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

Paràmetres de trucada:

  • command: String, especifica l'ordre a executar
  • options: Objecte, especifica els paràmetres de creació

Resultats de retorn:

Les opcions admeses són les següents:

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

Executeu una ordre a l'intèrpret d'ordres i emmagatzemeu la sortida. Quan s'executa en mode de devolució de trucada, la funció retornarà l'objecte del procés fill.

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

Paràmetres de trucada:

  • command: String, especifica l'ordre a executar
  • options: Objecte, especifica els paràmetres de creació

Resultats de retorn:

  • (Variant stdout, Variant stderr), retorna el contingut de sortida stdio del procés fill

Les opcions admeses són les següents:

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

Executeu directament el fitxer especificat i emmagatzemeu la sortida. Quan s'executa en mode de devolució de trucada, la funció retornarà l'objecte de procés fill.

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

Paràmetres de trucada:

  • command: String, especifica l'ordre a executar
  • args: Matriu, especifica la llista de paràmetres de cadena
  • options: Objecte, especifica els paràmetres de creació

Resultats de retorn:

  • (Variant stdout, Variant stderr), retorna el contingut de sortida stdio del procés fill

Les opcions admeses són les següents:

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. }

Executeu directament el fitxer especificat i emmagatzemeu la sortida. Quan s'executa en mode de devolució de trucada, la funció retornarà l'objecte de procés fill.

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

Paràmetres de trucada:

  • command: String, especifica l'ordre a executar
  • options: Objecte, especifica els paràmetres de creació

Resultats de retorn:

  • (Variant stdout, Variant stderr), retorna el contingut de sortida stdio del procés fill

Les opcions admeses són les següents:

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

Publiqueu un procés fill amb l'ordre donada

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;

Paràmetres de trucada:

  • command: String, especifica l'ordre a executar
  • args: Matriu, especifica la llista de paràmetres de cadena
  • options: Objecte, especifica els paràmetres de creació

Resultats de retorn:

  • (Integer pid, NArray output, Variant stdout, Variant stderr, Integer status, Variant error), retorna el resultat en execució del procés fill

Les opcions admeses són les següents:

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. }

Publiqueu un procés fill amb l'ordre donada

1 2
static (Integer pid, NArray output, Variant stdout, Variant stderr, Integer status, Variant error) child_process.spawnSync(String command, Object options = {}) async;

Paràmetres de trucada:

  • command: String, especifica l'ordre a executar
  • options: Objecte, especifica els paràmetres de creació

Resultats de retorn:

  • (Integer pid, NArray output, Variant stdout, Variant stderr, Integer status, Variant error), retorna el resultat en execució del procés fill

Les opcions admeses són les següents:

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

Executar un mòdul en un procés fill

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

Paràmetres de trucada:

  • module: String, especifica l'ordre a executar
  • args: Matriu, especifica la llista de paràmetres de cadena
  • options: Objecte, especifica els paràmetres de creació

Resultats de retorn:

Les opcions admeses són les següents:

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. }

Executar un mòdul en un procés fill

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

Paràmetres de trucada:

  • module: String, especifica l'ordre a executar
  • options: Objecte, especifica els paràmetres de creació

Resultats de retorn:

Les opcions admeses són les següents:

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

Executeu directament el fitxer especificat i retorneu l'exitCode. Quan s'executa en mode de devolució de trucada, la funció retornarà l'objecte de procés fill.

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

Paràmetres de trucada:

  • command: String, especifica l'ordre a executar
  • args: Matriu, especifica la llista de paràmetres de cadena
  • options: Objecte, especifica els paràmetres de creació

Resultats de retorn:

  • Integer, retorna el codi de sortida del procés fill

Les opcions admeses són les següents:

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. }

Executeu directament el fitxer especificat i retorneu l'exitCode. Quan s'executa en mode de devolució de trucada, la funció retornarà l'objecte de procés fill.

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

Paràmetres de trucada:

  • command: String, especifica l'ordre a executar
  • options: Objecte, especifica els paràmetres de creació

Resultats de retorn:

  • Integer, retorna el codi de sortida del procés fill

Les opcions admeses són les següents:

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. }