포크는 어떻습니까
여러 노드 스크립트를 실행하는 또 다른 옵션은 수있는 단일 노드 스크립트, 함께 포크 많은 다른 사람을. 포킹은 기본적으로 노드에서 지원되므로 종속성을 추가하지 않으며 크로스 플랫폼입니다.
최소 예
스크립트를 그대로 실행하고 부모 스크립트의 디렉토리에 있다고 가정합니다.
// fork-minimal.js - run with: node fork-minimal.js
const childProcess = require('child_process');
let scripts = ['some-script.js', 'some-other-script.js'];
scripts.forEach(script => childProcess.fork(script));
자세한 예
인수와 함께 스크립트를 실행하고 사용 가능한 많은 옵션으로 구성합니다.
// fork-verbose.js - run with: node fork-verbose.js
const childProcess = require('child_process');
let scripts = [
{
path: 'some-script.js',
args: ['-some_arg', '/some_other_arg'],
options: {cwd: './', env: {NODE_ENV: 'development'}}
},
{
path: 'some-other-script.js',
args: ['-another_arg', '/yet_other_arg'],
options: {cwd: '/some/where/else', env: {NODE_ENV: 'development'}}
}
];
let processes = [];
scripts.forEach(script => {
let runningScript = childProcess.fork(script.path, script.args, script.options);
// Optionally attach event listeners to the script
runningScript.on('close', () => console.log('Time to die...'))
runningScripts.push(runningScript); // Keep a reference to the script for later use
});
갈래의 스크립트와 통신
Forking은 상위 스크립트가 분기 된 하위 프로세스로부터 이벤트를 수신하고 다시 보낼 수 있다는 추가 이점도 있습니다. 일반적인 예는 부모 스크립트가 갈래의 자식을 죽이는 것입니다.
runningScripts.forEach(runningScript => runningScript.kill());
더 많은 이벤트 및 방법은 설명서를 참조하십시오ChildProcess
&&
스크립트를 실행 순차적 동안&
그들을 실행됩니다 병렬 .