2012-12-06 3 views
0

가능한 중복 :
node.js execute system command synchronouslynode.js 파일을 노드와 동시에 실행하는 방법은 무엇입니까?

나는 기적으로 다른 Node.js를 파일에서 Node.js를 파일을 실행하고자하는

. 이것은 내가 가진 것이지만 비동기입니다. 당신이하지이 동기가 될 싶어 같은 질문에서 귀하의 의견에서

var spawn = spawn('node', ['./file.js']); 
    spawn.stdout.on('data',function(data){}); 
+0

당신은 * 정말 * 기적을하고 싶어? ['exit' 이벤트]를 듣기보다는 (http://nodejs.org/api/all.html#all_event_exit_2)? 왜냐하면 당신은 그것으로부터'stdout'을 가지고 무엇인가를하고 싶어하는 것 같습니다. 동 기적으로 실행하면 해당 줄은 자식이 완료 될 때까지 실행되지 않습니다. * ... –

+0

@ T.J.Crowder 응답을 원하지 않지만 서버가 응답을 기다리지 않습니다. 나는'stdout'을 기다리는 또 다른 예에서'stdout'을 가져갔습니다. 전체 모듈을 설치하지 않고도이 작업을 수행 할 수있는 더 나은 기능이 있습니까? – ThomasReggi

+0

@ThomasReggi : 당신이 실제로 동기를 취하지 않길 원하는 것 같습니다. 내가 희망하는 답변을 추가했습니다. –

답변

2

, 그것은 소리, 당신은 출력에 대해 신경 쓰지 않는다.

다른 프로세스를 실행하고 종료하는 것을 잊지 않고 잊어 버리거나 끝나면 걱정하지 않고 이미 사용중인 것은 무엇입니까 (spawn).

당신이 원하는 경우 진정으로 파이어 앤 포겟 당신이 당신의 프로세스가 종료 될 때 자식 프로세스가 살해되지 않습니다 있도록 detached 옵션을 지정할 수 있습니다. 문서에서 :

옵션이 설정되면 하위 프로세스가 새 프로세스 그룹의 리더가됩니다. 이렇게하면 부모가 퇴장 한 후에도 자식이 계속 실행될 수 있습니다.

분명히 당신은뿐만 아니라 unref에 있고, 더 아래를 내려다 보면서 :

기본적으로, 부모는 종료 분리 된 아이를 기다립니다. 부모가 주어진 자식을 기다리지 않게하려면 child.unref() 메서드를 사용하고 부모의 이벤트 루프는 자식을 참조 횟수에 포함하지 않습니다.

그리고 분명히 stdio 처리 :

장기 실행 프로세스를 시작합니다 detached 옵션을 사용하여, 그것이 stdio 구성으로 제공되지 않는 백그라운드에서 실행 유지되지 않습니다 과정 부모와 연결되어 있지 않습니다. 부모의 stdio가 상속되면 자식은 제어 터미널에 연결되어 있습니다.

그래서 :

spawn('node', ['./file.js'], { 
    detached: true, 
    stdio: [ 'ignore', 'ignore', 'ignore' ] 
}).unref(); 
+0

환상적입니다. 저에게 이걸 파고 들게해서 고마워요. 와우. – ThomasReggi

+0

@ThomasReggi : 도움이 된 LOL 기쁘게 생각합니다! –

관련 문제