2014-01-06 6 views
0

child_process를 사용하여 nodejs에서 콘솔 응용 프로그램 (cpp로 작성 됨)의 인스턴스를 실행하려고합니다.child_process를 사용하여 nodejs 응용 프로그램에서 콘솔 응용 프로그램을 실행 중입니다.

function startSingleApp() { 
    console.log("startSingleApp entered"); 

    var exec = childProcess.exec; 
    var appOut; 
    exec("./ConsoleApplication.exe" ,function callback(error, stdout, stderr){ 
     appOut = stdOut; 
     console.log("started console app"); 
    }); 
}; 

그리고 ConsoleApplication4에만 인쇄 문자열 (< < "일부 문자열"cout을) 예상되는 동작 : 여기 코드입니다 ConsoleApplication4의 각 인스턴스에 대해 - 콘솔 창이 열리고 새로운 프로세스는 실제 동작을 만들어 : 더 콘솔 창, 프로세스 생성 안 함. 그러나 "시작된 콘솔 앱"문자열이 콘솔에 인쇄되었습니다 (nodejs 앱이 시작된 곳) nodejs 앱이있는 동일한 폴더에 ConsoleApplication.exe가 있습니다. ConsoleApplication.exe를 app (notepad 또는 calc)로 교체하면 작동합니다. 질문 -이 코드에는 무엇이 누락 되었습니까? 콘솔 응용 프로그램에서 콘솔을 수동으로 잡아야합니까?
도움이 될 것입니다.
미리 알림

답변

2

콘솔에서 콘솔 응용 프로그램을 실행해도 여전히 동일한 콘솔에서 실행됩니다. Windows 콘솔은 탐색기를 통해 콘솔 응용 프로그램을 실행할 때 자동으로 열리는 편리한 기능입니다.

직접 시도해보십시오. 먼저 cmd.exe을 열고 ConsoleApplication.exe을 실행하십시오. 새 창이 열리지 않습니다. 결과가 프롬프트 아래에 나타납니다. 그러면 또 다른 것을 얻을 수 있습니다.

exec("cmd /c ConsoleApplication.exe", function callback(error, stdout, stderr) { 
    appOut = stdOut; 
    console.log("started console app"); 
}); 
+0

빠른 답장을 보내 주셔서 감사합니다. 그러나 여전히 작동하지 않습니다. –

+0

어떻게 작동하지 않습니까? 창문이 정말로 필요한가요? 콜백이 전달 된'error' 인수를 확인 했습니까? – Ryan

+0

일부 업데이트 : 현재 노드 J와 동일한 콘솔에 로그를 인쇄합니다. 나는 콘솔 app의 끝에서 키 입력을 기다리는 것을 제거했다. 도움을 청한다. –

0

당신은이 같은 새 콘솔 창 만들기 위해 start를 사용할 수 있습니다 : 당신이 창을 표시하려면

수동 cmd를 실행할 수 있습니다

exec("start ConsoleApplication.exe", ....) 

을하고 라인을 추가 귀하의 C++에서 :

getch(); 
+0

getch() 또는 cin >> keyToRead와 같은 것을 추가하면 작동하지 않는다. 제거한 후 - 콘솔 출력을 볼 수 있습니다. 어쨌든 대답 주셔서 감사합니다. –

관련 문제