Рубрики
Без рубрики

Как создать дочерний процесс с помощью Node.js

Узнайте, как создать дочерний процесс с помощью Node.js

Node.js предоставляет модуль child_process , который предоставляет возможность создавать дочерние процессы.

Требуйте модуль и получите из него функцию spawn :

const { spawn } = require('child_process')

затем вы можете вызвать spawn() , передав 2 параметра.

Первый параметр – это команда для запуска.

Второй параметр представляет собой массив, содержащий список параметров.

Вот пример:

spawn('ls', ['-lh', 'test'])

В этом случае вы запускаете команду ls с 2 параметрами: - лг и тест . Это приводит к команде ls-lh test , которая (учитывая, что файл test существует в той же папке, в которой вы выполняете эту команду), приводит к подробным сведениям о файле:

-rw-r--r--  1 flaviocopes  staff     6B Sep 25 09:57 test

Результатом вызова функции spawn() является экземпляр класса Дочернего процесса , который идентифицирует порожденный дочерний процесс.

Вот немного более сложный пример, полностью работающий. Мы смотрим файл test и всякий раз, когда он изменяется, мы запускаем ls - lh команда на нем:

'use strict'

const fs = require('fs')
const { spawn } = require('child_process')
const filename = 'test'

fs.watch(filename, () => {
  const ls = spawn('ls', ['-lh', filename])
})

Не хватает только одного. Мы должны передавать выходные данные дочернего процесса в основной процесс, иначе мы не увидим никаких выходных данных из него.

Мы делаем это, вызывая метод pipe() в свойстве stdout дочернего процесса:

'use strict'

const fs = require('fs')
const { spawn } = require('child_process')
const filename = 'test'

fs.watch(filename, () => {
  const ls = spawn('ls', ['-lh', filename])
  ls.stdout.pipe(process.stdout)
})

Оригинал: “https://flaviocopes.com/how-to-spawn-child-process-node/”