Módulo módulo básico

Módulo proceso_neno

Módulo de xestión de procesos fillos

Método de referencia:

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

Ao crear un proceso fillo, a opción options.stdio úsase para configurar a canalización establecida entre o proceso pai e o proceso fillo. Por defecto, o stdin, stdout e stderr do proceso fillo redirixiranse aChildProcessOs fluxos stdin, stdout e stderr correspondentes no obxecto. Isto equivale a configurar options.stdio en ['pipe', 'pipe', 'pipe'].

Por comodidade, options.stdio pode ser unha das seguintes cadeas:

  • 'pipe': equivalente a ['pipe', 'pipe', 'pipe'] (valor predeterminado).
  • 'ignorar': equivalente a ['ignorar', 'ignorar', 'ignorar'].
  • 'herdar': equivalente a ['herdar', 'herdar', 'herdar'] ou [0, 1, 2].
  • 'pty': equivalente a ['pty', 'pty', 'pty']. Windows non é compatible.

Se non, o valor de options.stdio debe ser unha matriz (onde cada índice corresponde a un descriptor de ficheiro no proceso fillo). Os descritores de ficheiros 0, 1 e 2 corresponden a stdin, stdout e stderr, respectivamente. Pódense designar outros descritores de ficheiros para crear outras canalizacións entre o proceso pai e o proceso fillo. O valor pode ser un dos seguintes:

  1. 'pipa': crea un tubo entre o proceso fillo e o proceso pai. O pai da canalización está exposto ao proceso pai como o atributo stdio [fd] no obxecto child_process. Os tubos creados para os descritores de ficheiros 0, 1 e 2 tamén se poden usar como stdin, stdout e stderr, respectivamente.
  2. "ignorar": instruír a fibjs para que ignore o descriptor de ficheiro no proceso fillo. Aínda que fibjs sempre abrirá os descritores de ficheiros 0, 1 e 2 para os seus procesos xerados, configurar o descriptor de ficheiro en "ignorar" permite a fibjs abrir / dev / null e anexalo ao descriptor de ficheiro do proceso fillo.
  3. 'inherit': pasa o stdio correspondente a ou desde o proceso pai. Nas tres primeiras posicións, isto equivale aprocess.stdin, process.stdout con process.stderr. En calquera outra posición, equivale a "ignorar".
  4. 'pty': o proceso fillo executarase nun terminal virtual. Neste momento, só stdin e stdout son válidos.
  5. Entero positivo: o valor enteiro interpretarase como o descriptor de ficheiro aberto actualmente no proceso pai. Compártese co proceso fillo, similar a compartir <Stream> O xeito do obxecto. En Windows non se admiten tomas de entrada.
  6. nulo ou indefinido: use o valor predeterminado. Para os descritores de ficheiros stdio 0, 1 e 2 (noutras palabras, stdin, stdout e stderr), crearanse tubos. Para o descriptor de ficheiros 3 e superior, o valor predeterminado é "non".
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] });

Para os usuarios que usan nodejs ao mesmo tempo, preste atención

  • fibjs o child_process.exec(command, args)mesmo nome api nodejs funcións similares, pero en Windows, non manda automaticamente cmd.exe como parámetro de contorno de execución;
  • O proceso child_. [Spawn | exec | execFile | run] de fibjs é unha función de estilo asíncrono integrada de sincronización / devolución de chamada:
    • Se o último parámetro non é unha función, é síncrono
    • Se se pasa unha función como último parámetro, é asíncrona;
  • O resultado retorno de fibjs child_process. [Exec | execFile] é un obxecto, que é completamente diferente do obxecto devolto pola api de nodejs co mesmo nome
  • fibjs child_process.runnon é unha API correspondente nos nodejs

Función estática

spawn

Solta un proceso fillo co comando dado

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

Parámetros de chamada:

  • command: Cadea, especifique o comando para executar
  • args: Matriz, especifique a lista de parámetros de cadea
  • options: Obxecto, especifica parámetros de creación

Resultado de volta:

O contido soportado polas opcións é o seguinte:

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 }

Solta un proceso fillo co comando dado

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

Parámetros de chamada:

  • command: Cadea, especifique o comando para executar
  • options: Obxecto, especifica parámetros de creación

Resultado de volta:

O contido soportado polas opcións é o seguinte:

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

Executa un comando no shell e almacena a saída. Cando se executa en modo de devolución de chamada, a función devolverá o obxecto de proceso fillo.

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

Parámetros de chamada:

  • command: Cadea, especifique o comando para executar
  • options: Obxecto, especifica parámetros de creación

Resultado de volta:

  • (Variant stdout, Variant stderr), devolve o contido de saída stdio do proceso fillo

O contido soportado polas opcións é o seguinte:

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

Execute o ficheiro especificado directamente e almacene a saída. Cando se executa en modo de devolución de chamada, a función devolverá o obxecto de proceso fillo

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

Parámetros de chamada:

  • command: Cadea, especifique o comando para executar
  • args: Matriz, especifique a lista de parámetros de cadea
  • options: Obxecto, especifica parámetros de creación

Resultado de volta:

  • (Variant stdout, Variant stderr), devolve o contido de saída stdio do proceso fillo

O contido soportado polas opcións é o seguinte:

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 }

Execute o ficheiro especificado directamente e almacene a saída. Cando se executa en modo de devolución de chamada, a función devolverá o obxecto de proceso fillo

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

Parámetros de chamada:

  • command: Cadea, especifique o comando para executar
  • options: Obxecto, especifica parámetros de creación

Resultado de volta:

  • (Variant stdout, Variant stderr), devolve o contido de saída stdio do proceso fillo

O contido soportado polas opcións é o seguinte:

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

Executa un módulo no proceso fillo

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

Parámetros de chamada:

  • module: Cadea, especifique o comando para executar
  • args: Matriz, especifique a lista de parámetros de cadea
  • options: Obxecto, especifica parámetros de creación

Resultado de volta:

O contido soportado polas opcións é o seguinte:

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 }

Executa un módulo no proceso fillo

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

Parámetros de chamada:

  • module: Cadea, especifique o comando para executar
  • options: Obxecto, especifica parámetros de creación

Resultado de volta:

O contido soportado polas opcións é o seguinte:

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

Executa directamente o ficheiro especificado e devolve exitCode. Cando se executa en modo de devolución de chamada, a función devolverá o obxecto de proceso fillo

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

Parámetros de chamada:

  • command: Cadea, especifique o comando para executar
  • args: Matriz, especifique a lista de parámetros de cadea
  • options: Obxecto, especifica parámetros de creación

Resultado de volta:

  • Integer, Devolve o exitCode do proceso fillo

O contido soportado polas opcións é o seguinte:

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 }

Executa directamente o ficheiro especificado e devolve exitCode. Cando se executa en modo de devolución de chamada, a función devolverá o obxecto de proceso fillo

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

Parámetros de chamada:

  • command: Cadea, especifique o comando para executar
  • options: Obxecto, especifica parámetros de creación

Resultado de volta:

  • Integer, Devolve o exitCode do proceso fillo

O contido soportado polas opcións é o seguinte:

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 }