stdout으로 전송되지 않은 명령 줄 텍스트를 어떻게 캡처합니까?
문제
프로젝트에서 Lame Command Line MP3 인코더를 사용하고 있습니다. 누군가가 어떤 버전을 사용하고 있는지 볼 수 있기를 원합니다. 매개 변수가없는 Lame.exe를 실행하면 예를 들어 다음과 같습니다.
C:\LAME>LAME.exe
LAME 32-bits version 3.98.2 (http://www.mp3dev.org/)
usage: blah blah
blah blah
C:\LAME>
> 텍스트 파일에> 텍스트 파일로 출력을 텍스트 파일로 리디렉션하려고하면 텍스트 파일이 비어 있습니다. C#의 System.Process를 사용하여 실행할 때이 텍스트는 어디에서 액세스 할 수 있습니까?
해결책
아마도 stderr를 사용하고있을 것입니다. cmd.exe를 사용하면 stderr를 리디렉션 할 수 없으며, 내가 방향을 바꾸는 유일한 방법은 DJGPP 도구를 사용하는 것입니다.
다른 팁
stdout 대신 stderr로 출력 될 수 있습니다. 당신은 할 수 있습니다 STDERR 리디렉션 수행하여 :
LAME.exe 2> textfile.txt
이것이 정보를 보여 주면 Lame이 표준 오류 스트림으로 출력합니다. C#에 래퍼를 작성하면 리디렉션 할 수 있습니다. 표준 에러 출력 스트림 ProcessStartinfo.
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.EnableRaisingEvents = false;
proc.StartInfo.FileName = @"C:\LAME\LAME.exe";
proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.UseShellExecute = false;
proc.Start();
string output = proc.StandardError.ReadToEnd();
proc.WaitForExit();
MessageBox.Show(output);
일했다. 감사합니다!
제휴하지 않습니다 StackOverflow