Módulo módulo básico

Módulo child_process

Módulo de gestión de procesos secundarios

Método de referencia:

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

Al crear un proceso hijo, la opción options.stdio se utiliza para configurar la canalización establecida entre el proceso padre y el proceso hijo. De forma predeterminada, stdin, stdout y stderr del proceso hijo se redirigirán aChildProcessLos flujos stdin, stdout y stderr correspondientes en el objeto. Esto es equivalente a configurar options.stdio en ['pipe', 'pipe', 'pipe'].

Para mayor comodidad, options.stdio puede ser una de las siguientes cadenas:

  • 'pipe': equivalente a ['pipe', 'pipe', 'pipe'] (valor predeterminado).
  • 'ignorar': equivalente a ['ignorar', 'ignorar', 'ignorar'].
  • 'heredar': equivalente a ['heredar', 'heredar', 'heredar'] o [0, 1, 2].
  • 'pty': equivalente a ['pty', 'pty', 'pty']. Windows no es compatible.

De lo contrario, el valor de options.stdio debe ser una matriz (donde cada índice corresponde a un descriptor de archivo en el proceso hijo). Los descriptores de archivo 0, 1 y 2 corresponden a stdin, stdout y stderr, respectivamente. Se pueden designar otros descriptores de archivo para crear otras canalizaciones entre el proceso padre y el proceso hijo. El valor puede ser uno de los siguientes:

  1. 'pipe': crea una tubería entre el proceso hijo y el proceso padre. El padre de la tubería está expuesto al proceso padre como el atributo stdio [fd] en el objeto child_process. Las canalizaciones creadas para los descriptores de archivo 0, 1 y 2 también se pueden usar como stdin, stdout y stderr, respectivamente.
  2. 'ignore': Indique a fibjs que ignore el descriptor de archivo en el proceso hijo. Aunque fibjs siempre abrirá los descriptores de archivo 0, 1 y 2 para sus procesos generados, configurar el descriptor de archivo en 'ignorar' permite a fibjs abrir / dev / null y adjuntarlo al descriptor de archivo del proceso hijo.
  3. 'heredar': pasa el stdio correspondiente hacia o desde el proceso padre. En las tres primeras posiciones, esto equivale aprocess.stdin, process.stdout con process.stderr. En cualquier otra posición, equivale a "ignorar".
  4. 'pty': El proceso hijo se ejecutará en una terminal virtual. En este momento, solo stdin y stdout son válidos.
  5. Entero positivo: el valor entero se interpretará como el descriptor de archivo actualmente abierto en el proceso principal. Se comparte con el proceso hijo, similar a compartir <Stream> El camino del objeto. Los sockets entrantes no son compatibles con Windows.
  6. nulo o indefinido: use el valor predeterminado. Para los descriptores de archivos stdio 0, 1 y 2 (en otras palabras, stdin, stdout y stderr), se crearán tuberías. Para el descriptor de archivo 3 y superior, el valor predeterminado es 'ignorar'.
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 los usuarios que usan nodejs al mismo tiempo, preste atención

  • fibjs el child_process.exec(command, args)mismo nombre api nodejs funciones similares, pero en Windows, no automáticamente el comando cmd.exe como parámetro del entorno de ejecución;
  • El child_process. [Spawn | exec | execFile | run] de fibjs es una función de estilo asíncrono integrada de sincronización / devolución de llamada:
    • Si el último parámetro no es una función, es síncrono
    • Si se pasa una función como último parámetro, es asincrónica;
  • El resultado de retorno de fibjs child_process. [Exec | execFile] es un objeto, que es completamente diferente del objeto devuelto por la API de nodejs con el mismo nombre
  • fibjs child_process.runno es una API correspondiente en nodejs

Función estática

spawn

Liberar un proceso hijo con el comando dado

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

Parámetros de llamada:

  • command: Cadena, especifique el comando para ejecutar
  • args: Matriz, especifique la lista de parámetros de cadena
  • options: Objeto, especificar parámetros de creación

Devolver resultado:

El contenido admitido por las opciones es el siguiente:

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 }

Liberar un proceso hijo con el comando dado

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

Parámetros de llamada:

  • command: Cadena, especifique el comando para ejecutar
  • options: Objeto, especificar parámetros de creación

Devolver resultado:

El contenido admitido por las opciones es el siguiente:

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

Ejecuta un comando en el shell y almacena en búfer la salida. Cuando se ejecuta en modo de devolución de llamada, la función devolverá el objeto de proceso secundario

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

Parámetros de llamada:

  • command: Cadena, especifique el comando para ejecutar
  • options: Objeto, especificar parámetros de creación

Devolver resultado:

  • (Variant stdout, Variant stderr), devuelve el contenido de salida stdio del proceso hijo

El contenido admitido por las opciones es el siguiente:

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

Ejecuta el archivo especificado directamente y almacena en búfer la salida. Cuando se ejecuta en modo de devolución de llamada, la función devolverá el objeto de proceso secundario

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

Parámetros de llamada:

  • command: Cadena, especifique el comando para ejecutar
  • args: Matriz, especifique la lista de parámetros de cadena
  • options: Objeto, especificar parámetros de creación

Devolver resultado:

  • (Variant stdout, Variant stderr), devuelve el contenido de salida stdio del proceso hijo

El contenido admitido por las opciones es el siguiente:

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 }

Ejecuta el archivo especificado directamente y almacena en búfer la salida. Cuando se ejecuta en modo de devolución de llamada, la función devolverá el objeto de proceso secundario

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

Parámetros de llamada:

  • command: Cadena, especifique el comando para ejecutar
  • options: Objeto, especificar parámetros de creación

Devolver resultado:

  • (Variant stdout, Variant stderr), devuelve el contenido de salida stdio del proceso hijo

El contenido admitido por las opciones es el siguiente:

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

Ejecutar un módulo en el proceso hijo

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

Parámetros de llamada:

  • module: Cadena, especifique el comando para ejecutar
  • args: Matriz, especifique la lista de parámetros de cadena
  • options: Objeto, especificar parámetros de creación

Devolver resultado:

El contenido admitido por las opciones es el siguiente:

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 }

Ejecutar un módulo en el proceso hijo

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

Parámetros de llamada:

  • module: Cadena, especifique el comando para ejecutar
  • options: Objeto, especificar parámetros de creación

Devolver resultado:

El contenido admitido por las opciones es el siguiente:

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

Ejecuta el archivo especificado directamente y devuelve exitCode. Cuando se ejecuta en modo de devolución de llamada, la función devolverá el objeto de proceso hijo

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

Parámetros de llamada:

  • command: Cadena, especifique el comando para ejecutar
  • args: Matriz, especifique la lista de parámetros de cadena
  • options: Objeto, especificar parámetros de creación

Devolver resultado:

  • Integer, Devuelve el exitCode del proceso hijo

El contenido admitido por las opciones es el siguiente:

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 }

Ejecuta el archivo especificado directamente y devuelve exitCode. Cuando se ejecuta en modo de devolución de llamada, la función devolverá el objeto de proceso hijo

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

Parámetros de llamada:

  • command: Cadena, especifique el comando para ejecutar
  • options: Objeto, especificar parámetros de creación

Devolver resultado:

  • Integer, Devuelve el exitCode del proceso hijo

El contenido admitido por las opciones es el siguiente:

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 }