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/”