728x90
child_process
'Node.js ChildProcess'는 자식프로세스 기능을 사용할 수 있게 한다. 이 모듈을 사용하기 위해서는 자식 프로세스를 생성해야 한다. 자식 프로세스의 인스턴스를 생성하려면 spawn()나 fork() 메서드를 사용하면 된다.
require(‘child_process’).spawn(command, args=[], [options])
options: 기본값은 { cwd:undefined, env:process.env, setsid: false } 이다.
- ‘cwd’는 생성된 프로세스가 실행되는 디렉토리를 지정하는 것이고,
- ‘env’는 새 프로세스가 접근할 수 있는 환경 변수를 지정,
- ‘setsid’가 true이면 서브프로세스를 새 세션으로 생성하게 된다.
(cluster 인 것 같다. )
child_procss 종류
ChildProcess는 EventEmitter이다. 이는 각 스트림에 이벤트 리스너를 등록할 수 있음을 의미한다.
자식 프로세스들은 자신들과 연관된 세 가지 스트림 child.stdin, child.stdout, child.stderr를 항상 가진다. 이 세 스트림은 부모 프로세스의 stdio 스트림을 공유하거나 파이프로 연결될 수 있는 스크림을 구분할 것이다.
var spawn = require('child_process').spawn, ls = spawn('ls', ['-a']);
ls.stdout.on('data', function(data) {
console.log('stdout: ' + data);
});
ls.stderr.on('data', function(data) {
console.log('stderr: ' + data);
});
ls.on('exit', function(code) {
console.log('exit: ' + code);
});
child_process.exec(command, [options], callback)
- 'command'를 실행하고 결과를 돌려주는 함수이다.
- 콜백함수는 function(error, stdout, stderr) { } 이다.
- 'options'에 들어가는 파라미터 기본값은 다음과 같다
{
encoding: 'utf8',
timeout: 0, // msec
maxBuffer: 200*1024,
killSignal: 'SIGTERM',
cwd: null,
env: null
}
'timeout' 후에 프로세스를 종료하며 종료할 때 'killSignal'을 쓴다.
[출처]
https://nodejs.sideeffect.kr/docs/v0.8.15/api/child_process.html#child_process_child_process_exec_command_options_callback
https://202psj.tistory.com/1233
https://backback.tistory.com/362
728x90
'JavaScript > Node.js' 카테고리의 다른 글
Logging 모듈 Winston (0) | 2023.05.03 |
---|---|
Node.js에서 Python 함수 호출하기 - spawn() (0) | 2023.05.03 |
url 모듈 (0) | 2023.04.22 |
Node.js 기초와 모듈(내장 모듈, npm, 사용자정의 모듈) (0) | 2023.02.04 |
사용자 정의 모듈 (0) | 2023.02.04 |