본문 바로가기

JavaScript/Node.js

자식 프로세스(child_process)

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