2012-02-04 2 views
2

C# 콘솔 (printf ("") 문)의 출력을 C# 콘솔로 리디렉션하려고합니다. 다음C# 콘솔 출력을 C# 콘솔로 리디렉션해도 아무 것도 인쇄되지 않습니다.

내가

 Process e = new Process(); 
     e.StartInfo.UseShellExecute = false; 
     e.StartInfo.RedirectStandardOutput = true; 
     e.StartInfo.FileName = "C:\\Users\\Projects\\ot\\x64\\Debug\\ot.exe"; 
     e.OutputDataReceived += (s, e) => Console.WriteLine(e.Data); 
     e.Start(); 
     e.BeginOutputReadLine(); 

을 가지고있다하지만 모든 출력을받지 못했습니다 것입니다. C++ 콘솔은 아무 것도 출력하지 않습니다 (출력이 리디렉션되었음을 의미 함).

어떻게이 문제를 해결할 수 있습니까?

감사합니다,

+0

[OutputDataReceived] (http://msdn.microsoft.com/en-us/library/system.diagnostics.process.outputdatareceived.aspx)에 "비동기 처리중인 응용 프로그램이 처리 중입니다. 출력은 WaitForExit() 메서드를 호출하여 출력 버퍼가 플러시되었는지 확인해야합니다. " –

+0

레이몬드에게 감사드립니다. WaitForExit()도 마찬가지입니다. 실제로 내 C++는 OpenCV를 사용하는 응용 프로그램입니다. OpenCV 관련 함수를 사용할 때 printf 문만 C# 콘솔로 리디렉션되지 않습니다. 사용하는 경우처럼, CvCapture * capture = cvCaptureFromCAM (1); 은 C# console로 리디렉션되지 않는 printf 문 다음에옵니다. – Gimz

답변

0

시도가 사용하기 : 내가 함께 process class 포장 및 다른 프로세스와 상호 작용하는 데 도움이 될 수있는 기본 클래스를 넣었습니다

Process e = new Process(); 
    e.StartInfo.UseShellExecute = false; 
    e.StartInfo.RedirectStandardOutput = true; 
    e.StartInfo.RedirectStandardError = true; 
    e.StartInfo.FileName = "C:\\Users\\Projects\\ot\\x64\\Debug\\ot.exe"; 
    e.OutputDataReceived += (s, e) => Console.WriteLine(e.Data); 
    e.ErrorDataReceived += (s, e) => Console.WriteLine(e.Data); 
    e.Start(); 
    e.BeginOutputReadLine(); 
    e.BeginErrorReadLine(); 
    e.WaitForExit(); 
    e.CancelErrorRead(); 
    e.CancelOutputRead(); 

.

+0

스택 오버플로에 오신 것을 환영합니다. 답변은 자체 포함되어야 함을 유의하십시오. 링크는 리소스와 추가 정보를 제공하는 데 사용될 수 있지만 실제 솔루션은 응답 자체에 포함되어야합니다. 이 사이트의 질문에 답변하는 방법은 [도움말 센터] (http://stackoverflow.com/help/how-to-answer)를 참조하십시오. – McMath

관련 문제