Модуль базовый модуль

Модуль child_process

Модуль управления дочерними процессами

Эталонный метод:

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

При создании дочернего процесса параметр options.stdio используется для настройки конвейера, установленного между родительским процессом и дочерним процессом. По умолчанию stdin, stdout и stderr дочернего процесса будут перенаправлены наChildProcessСоответствующие потоки stdin, stdout и stderr для объекта. Это эквивалентно установке для options.stdio значения ['pipe', 'pipe', 'pipe'].

Для удобства options.stdio может быть одной из следующих строк:

  • 'pipe': эквивалент ['pipe', 'pipe', 'pipe'] (значение по умолчанию).
  • «игнорировать»: эквивалент [«игнорировать», «игнорировать», «игнорировать»].
  • «наследовать»: эквивалент [«наследовать», «наследовать», «наследовать»] или [0, 1, 2].
  • 'pty': эквивалент ['pty', 'pty', 'pty']. Windows не поддерживается.

В противном случае значение options.stdio должно быть массивом (где каждый индекс соответствует дескриптору файла в дочернем процессе). Дескрипторы файлов 0, 1 и 2 соответствуют stdin, stdout и stderr соответственно. Другие файловые дескрипторы могут быть назначены для создания других каналов между родительским и дочерним процессами. Значение может быть одним из следующих:

  1. 'pipe': создать канал между дочерним и родительским процессами. Родитель канала предоставляется родительскому процессу как атрибут stdio [fd] объекта child_process. Каналы, созданные для файловых дескрипторов 0, 1 и 2, также могут использоваться как stdin, stdout и stderr соответственно.
  2. 'ignore': указать fibjs игнорировать файловый дескриптор в дочернем процессе. Хотя fibjs всегда будет открывать файловые дескрипторы 0, 1 и 2 для своих порожденных процессов, установка для файлового дескриптора значения 'игнорировать' позволяет fibjs открывать / dev / null и присоединять его к файловому дескриптору дочернего процесса.
  3. 'наследовать': передать соответствующий stdio родительскому процессу или от него. В первых трех позициях это эквивалентноprocess.stdin, process.stdout с участием process.stderr. В любом другом положении это эквивалентно «игнорировать».
  4. 'pty': дочерний процесс будет выполняться в виртуальном терминале. В настоящее время допустимы только stdin и stdout.
  5. Положительное целое число: целочисленное значение будет интерпретироваться как файловый дескриптор, открытый в данный момент в родительском процессе. Он используется дочерним процессом аналогично разделению <Stream> Путь объекта. Входящие сокеты не поддерживаются в Windows.
  6. null или undefined: используйте значение по умолчанию. Для дескрипторов файлов stdio 0, 1 и 2 (другими словами, stdin, stdout и stderr) будут созданы каналы. Для дескриптора файла 3 и выше по умолчанию используется значение «игнорировать».
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] });

Для пользователей, которые одновременно используют nodejs, обратите внимание

  • fibjs с child_process.exec(command, args)тем же именем api nodejs аналогичные функции, но в Windows не выполняет автоматически команду cmd.exe в качестве параметра среды выполнения;
  • Child_process. [Spawn | exec | execFile | run] для fibjs - это интегрированная функция асинхронного стиля с синхронизацией / обратным вызовом:
    • Если последний параметр не является функцией, он синхронный.
    • Если функция передается в качестве последнего параметра, она асинхронна;
  • Результат возврата fibjs child_process. [Exec | execFile] - это объект, который полностью отличается от объекта, возвращаемого nodejs api с тем же именем
  • fibjs child_process.runне соответствует API в nodejs

Статическая функция

spawn

Освободите дочерний процесс с помощью данной команды

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

Параметры звонка:

  • command: String, укажите команду для запуска
  • args: Массив, укажите список строковых параметров
  • options: Object, укажите параметры создания

Результат возврата:

  • ChildProcess, Вернуть объект дочернего процесса

Содержимое, поддерживаемое опциями, выглядит следующим образом:

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 }

Освободите дочерний процесс с помощью данной команды

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

Параметры звонка:

  • command: String, укажите команду для запуска
  • options: Object, укажите параметры создания

Результат возврата:

  • ChildProcess, Вернуть объект дочернего процесса

Содержимое, поддерживаемое опциями, выглядит следующим образом:

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

Выполнение команды в оболочке и буферизация вывода. При выполнении в режиме обратного вызова функция вернет объект дочернего процесса.

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

Параметры звонка:

  • command: String, укажите команду для запуска
  • options: Object, укажите параметры создания

Результат возврата:

  • (Variant stdout, Variant stderr), возвращает содержимое вывода stdio дочернего процесса

Содержимое, поддерживаемое опциями, выглядит следующим образом:

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

Выполнить указанный файл напрямую и буферизовать вывод. При выполнении в режиме обратного вызова функция вернет объект дочернего процесса.

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

Параметры звонка:

  • command: String, укажите команду для запуска
  • args: Массив, укажите список строковых параметров
  • options: Object, укажите параметры создания

Результат возврата:

  • (Variant stdout, Variant stderr), возвращает содержимое вывода stdio дочернего процесса

Содержимое, поддерживаемое опциями, выглядит следующим образом:

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 }

Выполнить указанный файл напрямую и буферизовать вывод. При выполнении в режиме обратного вызова функция вернет объект дочернего процесса.

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

Параметры звонка:

  • command: String, укажите команду для запуска
  • options: Object, укажите параметры создания

Результат возврата:

  • (Variant stdout, Variant stderr), возвращает содержимое вывода stdio дочернего процесса

Содержимое, поддерживаемое опциями, выглядит следующим образом:

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

Выполнить модуль в дочернем процессе

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

Параметры звонка:

  • module: String, укажите команду для запуска
  • args: Массив, укажите список строковых параметров
  • options: Object, укажите параметры создания

Результат возврата:

  • ChildProcess, Вернуть объект дочернего процесса

Содержимое, поддерживаемое опциями, выглядит следующим образом:

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 }

Выполнить модуль в дочернем процессе

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

Параметры звонка:

  • module: String, укажите команду для запуска
  • options: Object, укажите параметры создания

Результат возврата:

  • ChildProcess, Вернуть объект дочернего процесса

Содержимое, поддерживаемое опциями, выглядит следующим образом:

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

Выполнить указанный файл напрямую и вернуть код выхода. При выполнении в режиме обратного вызова функция вернет объект дочернего процесса.

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

Параметры звонка:

  • command: String, укажите команду для запуска
  • args: Массив, укажите список строковых параметров
  • options: Object, укажите параметры создания

Результат возврата:

  • Integer, Верните exitCode дочернего процесса

Содержимое, поддерживаемое опциями, выглядит следующим образом:

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 }

Выполнить указанный файл напрямую и вернуть код выхода. При выполнении в режиме обратного вызова функция вернет объект дочернего процесса.

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

Параметры звонка:

  • command: String, укажите команду для запуска
  • options: Object, укажите параметры создания

Результат возврата:

  • Integer, Верните exitCode дочернего процесса

Содержимое, поддерживаемое опциями, выглядит следующим образом:

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 }