mjpg_streamer와 함께 spawn 함수를 사용하고 있습니다. 그러나 자식 프로세스는 생성되는 즉시 종료됩니다. 여기에 내가 실제 명령 자체를 실행node.js 스폰. 즉시 종료 된 exit 이벤트
streamingProcess = spawn('mjpg_streamer', [
'-i', '"/usr/local/lib/input_file.so -f ' + IMAGE_PATH + ' -n ' + IMAGE_NAME + '"',
'-o', '"/usr/local/lib/output_http.so -w /usr/local/www"'
]);
streamingProcess.on('exit', function(code, signal) {
console.log('streaming process has stopped. Code: ' + code + ', signal: ' + signal);
streamingProcess = null;
});
을 사용하고있는 코드는 다음 반환 :
는무엇 mjpg_streamer 명령이 기본적으로 수행하는 것은 웹 서버를 불입니다. exit 콜백의 코드는 1이고 신호는 null
입니다.
무슨 일이 일어나고 있는지 아주 확실하지가 ...
는업데이트 : 내가 exec
를 사용하는 경우
, 다음 그것을 잘 작동합니다! 그러나 kill을 호출하면 프로세스가 종료되지 않습니다!
그래서streamingProcess = exec('LD_LIBRARY_PATH=/usr/local/lib mjpg_streamer -i "input_file.so -f /tmp/stream -n pic.jpg" -o "output_http.so -w /usr/local/www"');
은 실제로 웹 서버를 불 않지만, 지금은 종료 이벤트가 발생한다
streamingProcess.kill()
호출하면,하지만 프로세스 자체는 죽지 않습니다. 추가 검사에서 pid (노드 하위 프로세스와 OS에서)가 동일하지 않은 것처럼 보입니다. ?? 지금은 혼란 스러워요
...업데이트 2 :
좋아, 내가 exec
에 무슨 일이 일어나고 있는지 이해하기 시작하고있다 생각합니다. 그래서 그것은 서브 쉘에서 명령을 실행하는데, 두 개의 프로세스를 생성하고 있습니다. 하나는 서브 쉘이고 다른 하나는 mjpg_streamer 명령입니다. 따라서 exec
을 죽이면 서브 쉘 만 죽게됩니다. 그러나 mjpg_streamer는 남아 있습니다. 노드에서
:
운영 체제에서 :
그래서 3752 내가 죽이고 싶어 실제 명령입니다. 노드에서이 PID를 가져올 방법이 없다고 생각합니까? :)
DUDE. 정말 고맙습니다! – Umair