프로그래밍/NodeJS

[NodeJS] child_process의 exit와 close 차이

Beginner:) 2025. 2. 18.

목차

320x100
  exit close
발생 시점 메인 스레드가 종료될 때 메인 스레드 포함 스트림이 닫혔을 때

 

 

예제

예제 코드이다. ffmpeg는 동영상 관련 명령어라 생각하면 된다.

const ffmpegProcess = spawn('ffmpeg', ['-i', 'input.mp4', '-f', 'mp4', '-']);
const writeStream = fs.createWriteStream('output.mp4');
ffmpegProcess.stdout.pipe(writeStream);

ffmpegProcess.on('exit', (code) => {
  console.log(`exit 이벤트 발생 (코드: ${code})`);
});

ffmpegProcess.on('close', (code) => {
  console.log(`close 이벤트 발생 (코드: ${code})`);
});

 

이 상황에서 ffmpeg로 동영상을 생성하는데, 

ffmpeg명령어가 끝났지면 writeStream에 남아있을 수 있다. 

그러면 ffmpeg의 exit가 먼저 발생하고, writeString의 close가 다음 발생하고, ffmpeg의 close가 발생한다

 

이 상황을 일상에 비유하자면

샤워를 실행하였고(spawn ffmpeg),

샤워라는 명령어를 수행하고 마지막 명령어까지 수행하였고(data)

수도꼭지를 잠궜고(exit),

호수에 있던 물이 모두 빠져나오자 물이 멈췄다(close)

반응형