2013-10-16 4 views
0

노드 스크립트에서 배치 파일에 의해 시작된 프로그램을 종료하기 위해 배치 파일 run.bat를 실행하는 하위 프로세스를 생성했습니다. 자식 프로세스에 Ctrl + C 조합을 보내야합니다. stdin.write() 메서드를 사용하여 ctrl + c 조합을 프로그램에 보냅니다.stdin.write()를 사용하여 생성 된 node.js 자식 프로세스에 crtl + c를 보냅니 까?

var hmc = require('child_process').spawn('cmd'); 
hmc.stdin.write('run.bat \n'); 

답변

1

CTRL + C는 Windows에서 SIGINT를 전송하는 것과 동일합니다. 대신 키 입력을 보내려고하는 대신 신호를 보낼 수 있습니다. 이것은 어느 쪽이든 당신은 아이의 프로세스 ID를 가지고 제공, 자식 프로세스 방법 또는 다른 프로세스에서 수행 할 수 있습니다

hmc.kill('SIGINT'); 
// or from another process 
process.kill(hmc.pid, 'SIGINT'); 
+0

https://nodejs.org/api/process.html#process_signal_events이 있습니다를 윈도우 는 시그널을 지원하지 않지만 node는 process.kill()과 child_process.kill()을 사용하여 에뮬레이션을 제공한다 : - 시그널 0은 프로세스의 존재를 찾는데 사용될 수있다 - SIGINT, SIGTERM, 그리고 SIGKILL을 보내면 대상 프로세스의 무조건 종료 – garkin

+1

그래서 Windows에서는 신호가 없습니다. 프로세스를 즉시 종료합니다 (정상적으로는 안됨). – garkin