리디렉션 표준 출력 처리 대기
App Store를 통해 가져 오기 우리의 응용 프로그램 에서이 게시물을 읽으십시오!
RedirectStandardOutput이 NUnit에서 작동하도록하려면 어떻게해야합니까?
저는 QA 그룹을위한 자동화 전략을 연구 중이며 스크립트 및 EXE 출력을 캡처 할 수 있어야합니다. 이 코드를 콘솔 앱으로 실행하면 plink. exe의 출력을 성공적으로 캡처 할 수 있습니다.
이 명령을 실행하는 데 약 1 분이 걸리고 출력 변수에 결과를 성공적으로 캡처합니다.
그러나 DLL과 동일한 코드를 컴파일하고 NUnit을 실행하면 코드가 즉시 완료되고 output == NULL의 값으로 실패합니다.
문제를 줄 문자열 output = process. StandardOutput. ReadToEnd ()로 좁혔습니다. 필자가 라인을 주석 처리하면 실행 시간이 약 1 분이고 원격 컴퓨터에서 작업이 성공적으로 실행됩니다 (test. sh는 원격 Linux 상자에서 실행됩니다).
나는 무언가 간단한 것을 놓치기를 바란다 - 나는 다른 테스트 장치를 찾아야하고 싶지 않다.
Ok, 그것은 밤새도록 나를 필요로했다. 그러나 나는 그것을 이해했다. 이 작업을 위해 표준 출력을 리디렉션하는 것 외에도 RedirectStandardInput에해야합니다.
다음은 DLL에서 작동하는 고정 코드입니다. 참고로이 수정은 WinForms 앱의 문제도 해결합니다.
자신이 발견 한대로 선을 추가하십시오.
문제를 해결합니다. NUnit은 또 다른 수준의 간접 지정을 설정해야합니다. 고통스러운 조사에서 나를 구해준 당신의 답변에 감사드립니다.
콘솔 응용 프로그램으로 컴파일 된 테스트 프로젝트에서이 문제가 발생했기 때문에 dll / exe의 차이로 인한 문제는 아니라고 생각합니다.
리디렉션 표준 출력 처리 대기
App Store를 통해 가져 오기 우리의 응용 프로그램 에서이 게시물을 읽으십시오!
리디렉션 프로세스 출력 C #
프로세스의 표준 출력을 나중에 구문 분석 할 수 있도록 문자열로 리디렉션하고 싶습니다. 또한 프로세스가 실행되는 동안 화면에서 결과를보고 싶을뿐만 아니라 실행이 끝났을 때도보고 싶습니다.
그게 가능한가?
MSDN의 샘플 :
또한 ReadToEnd ()에 대한 대안으로 OutputDataReceived 및 BeginOutputReadLine ()을 참조하십시오. "프로세스가 실행되는 동안 출력보기"요구 사항을 더 잘 수행합니다.
C # 응용 프로그램에서 exe를 실행하고 출력을 얻으려면 아래 코드를 사용할 수 있습니다.
리디렉션 표준 출력 처리 대기
System. Diagnostics. Process. Start ()를 사용하여 파일을 실행하고. WaitForExit ()을 사용하여 프로세스가 완료 될 때까지 기다립니다.
그런 다음 File. Delete (파일 이름)을 사용하여 실행 파일을 삭제합니다.
이것은 내가 어떻게 든, 프로세스가 여전히 살아 있고. WaitForExit () 호출이 반환 된 후에도 실행 파일을 잠그고 있다고 믿게한다.
왜 이런 일이 일어 났는지에 대한 아이디어가 있고 (코드에 퍼팅하는 것 이외에) 이것에 대한 수정이 있다면?
Samuel Stanojevic 님의 답변으로 표시 2010 년 1 월 8 일 금요일 4:20 PM Tergiver 작성자 2010 년 1 월 8 일 금요일 4:20 PM bool, 무한 루프 수정으로 변경되었습니다.
Microsoft는 Msdn 웹 사이트에 대한 귀하의 의견을 이해하기 위해 온라인 설문 조사를 실시하고 있습니다. 참여를 선택하면 Msdn 웹 사이트를 탈퇴 할 때 온라인 설문 조사가 제공됩니다.
리디렉션 표준 출력 처리 대기
Process. StandardOuput 속성의 발언 섹션을 읽는 것이 좋습니다.
HTH Tom Shelton.
Cor Ligthert MVP의 답변으로 제안 됨 2010 년 2 월 2 일 화요일 오후 6:06 Martin_Xie 중재자의 답변으로 표시 Monday, February 08, 2010 3:12 AM.
모든 답장.
그것은 당신의 통제하에 있습니다. 작성한 래퍼의 코드는 무엇이며, 세 번째 모듈의 래퍼에 사용한 코드는 두 개의 다른 모듈에 대한 래퍼에 사용한 코드와 어떻게 다릅니 까?
Public Sub Execute ()
System. IO. Stream으로 Dim fs.
새 프로세스로 Dim proc.
문자열로 Dim szResult.
szPath를 String으로 희미하게합니다.
'*** 볼 데이터를 생성하십시오.
szPath = Me. WorkingDir & amp; 내. Settings. BallGenResultFile.
만약 내가. KillBeforeExecute 그럼.
ex로 FileNotFoundException을 잡아라.
'무시 파일을 찾을 수 없습니다.'
proc. StartInfo. FileName = 내. Settings. BallGenExec.
proc. StartInfo. WorkingDirectory = Me. WorkingDir.
그렇지 않은 경우 proc. WaitForExit (My. Settings. BallGenTimeout) 그런 다음.
새로운 MsExecuteException 던짐 (My. Settings. BallGenModule, & quot; BallGen이 실행을 완료하기를 기다리는 시간 초과 & quot;)
String pare (szResult. Trim, My. Settings. BallGenNormalExit. Trim, True) & lt; & gt; 0 그럼.
새로운 MsExecuteException 던지기 (My. Settings. BallGenModule, szResult)
If Not System. IO. File. Exists (szPath) 그런 다음.
새로운 MsExecuteException 던짐 (My. Settings. BallGenModule, & quot; BallGen 결과 파일이 생성되지 않았습니다 & quot;)
'*** 공은 성공할 수 있습니다.
*** 벽에 데이터를 생성하십시오.
szPath = Me. WorkingDir & amp; 내. Settings. WallGenResultFile.
만약 내가. KillBeforeExecute 그럼.
ex로 FileNotFoundException을 잡아라.
'무시 파일을 찾지 못했습니다'예외, 다른 모든 예외를 던집니다.
proc = 새로운 프로세스.
proc. StartInfo. FileName = 내. Settings. WallGenExec.
proc. StartInfo. WorkingDirectory = Me. WorkingDir.
그렇지 않은 경우 proc. WaitForExit (My. Settings. WallGenTimeout) 그런 다음.
새로운 MsExecuteException을 던집니다. (My. Settings. WallGenModule, & quot; WallGen의 실행이 완료되기를 기다리는 시간 초과 & quot;)
If Not System. IO. File. Exists (szPath) 그런 다음.
새로운 MsExecuteException 던짐 (My. Settings. WallGenModule, & quot; WallGen 결과 파일이 생성되지 않았습니다 & quot;)
Process. StandardOuput 속성의 발언 섹션을 읽는 것이 좋습니다.
HTH Tom Shelton.
Cor Ligthert MVP의 답변으로 제안 됨 2010 년 2 월 2 일 화요일 오후 6:06 Martin_Xie 중재자의 답변으로 표시 Monday, February 08, 2010 3:12 AM.
이게 도움이 되나요? 더 궁금한 점이 있으시면 언제든지 저희에게 알려주십시오.
게다가, 여기에 응용 프로그램의 표준 입력 - 출력을 리디렉션하는 방법을 설명하는 한 문서가 있습니다.
친절한 도움과 지원에 감사드립니다.
지원에 대한 의견이 있으시면 msdnmgmicrosoft에 문의하십시오.
답변이 도움이되지 않는다면 대답을 표시하고 표시를 해제하면 회신을 답변으로 표시해야합니다.
Microsoft는 Msdn 웹 사이트에 대한 귀하의 의견을 이해하기 위해 온라인 설문 조사를 실시하고 있습니다. 참여를 선택하면 Msdn 웹 사이트를 탈퇴 할 때 온라인 설문 조사가 제공됩니다.
App Store를 통해 가져 오기 우리의 응용 프로그램 에서이 게시물을 읽으십시오!
리디렉션 프로세스 출력 C #
프로세스의 표준 출력을 나중에 구문 분석 할 수 있도록 문자열로 리디렉션하고 싶습니다. 또한 프로세스가 실행되는 동안 화면에서 결과를보고 싶을뿐만 아니라 실행이 끝났을 때도보고 싶습니다.
그게 가능한가?
MSDN의 샘플 :
또한 ReadToEnd ()에 대한 대안으로 OutputDataReceived 및 BeginOutputReadLine ()을 참조하십시오. "프로세스가 실행되는 동안 출력보기"요구 사항을 더 잘 수행합니다.
C # 응용 프로그램에서 exe를 실행하고 출력을 얻으려면 아래 코드를 사용할 수 있습니다.
리디렉션 표준 출력 처리 대기
System. Diagnostics. Process. Start ()를 사용하여 파일을 실행하고. WaitForExit ()을 사용하여 프로세스가 완료 될 때까지 기다립니다.
그런 다음 File. Delete (파일 이름)을 사용하여 실행 파일을 삭제합니다.
이것은 내가 어떻게 든, 프로세스가 여전히 살아 있고. WaitForExit () 호출이 반환 된 후에도 실행 파일을 잠그고 있다고 믿게한다.
왜 이런 일이 일어 났는지에 대한 아이디어가 있고 (코드에 퍼팅하는 것 이외에) 이것에 대한 수정이 있다면?
Samuel Stanojevic 님의 답변으로 표시 2010 년 1 월 8 일 금요일 4:20 PM Tergiver 작성자 2010 년 1 월 8 일 금요일 4:20 PM bool, 무한 루프 수정으로 변경되었습니다.
Microsoft는 Msdn 웹 사이트에 대한 귀하의 의견을 이해하기 위해 온라인 설문 조사를 실시하고 있습니다. 참여를 선택하면 Msdn 웹 사이트를 탈퇴 할 때 온라인 설문 조사가 제공됩니다.
리디렉션 표준 출력 처리 대기
Process. StandardOuput 속성의 발언 섹션을 읽는 것이 좋습니다.
HTH Tom Shelton.
Cor Ligthert MVP의 답변으로 제안 됨 2010 년 2 월 2 일 화요일 오후 6:06 Martin_Xie 중재자의 답변으로 표시 Monday, February 08, 2010 3:12 AM.
모든 답장.
그것은 당신의 통제하에 있습니다. 작성한 래퍼의 코드는 무엇이며, 세 번째 모듈의 래퍼에 사용한 코드는 두 개의 다른 모듈에 대한 래퍼에 사용한 코드와 어떻게 다릅니 까?
Public Sub Execute ()
System. IO. Stream으로 Dim fs.
새 프로세스로 Dim proc.
문자열로 Dim szResult.
szPath를 String으로 희미하게합니다.
'*** 볼 데이터를 생성하십시오.
szPath = Me. WorkingDir & amp; 내. Settings. BallGenResultFile.
만약 내가. KillBeforeExecute 그럼.
ex로 FileNotFoundException을 잡아라.
'무시 파일을 찾을 수 없습니다.'
proc. StartInfo. FileName = 내. Settings. BallGenExec.
proc. StartInfo. WorkingDirectory = Me. WorkingDir.
그렇지 않은 경우 proc. WaitForExit (My. Settings. BallGenTimeout) 그런 다음.
새로운 MsExecuteException 던짐 (My. Settings. BallGenModule, & quot; BallGen이 실행을 완료하기를 기다리는 시간 초과 & quot;)
String pare (szResult. Trim, My. Settings. BallGenNormalExit. Trim, True) & lt; & gt; 0 그럼.
새로운 MsExecuteException 던지기 (My. Settings. BallGenModule, szResult)
If Not System. IO. File. Exists (szPath) 그런 다음.
새로운 MsExecuteException 던짐 (My. Settings. BallGenModule, & quot; BallGen 결과 파일이 생성되지 않았습니다 & quot;)
'*** 공은 성공할 수 있습니다.
*** 벽에 데이터를 생성하십시오.
szPath = Me. WorkingDir & amp; 내. Settings. WallGenResultFile.
만약 내가. KillBeforeExecute 그럼.
ex로 FileNotFoundException을 잡아라.
'무시 파일을 찾지 못했습니다'예외, 다른 모든 예외를 던집니다.
proc = 새로운 프로세스.
proc. StartInfo. FileName = 내. Settings. WallGenExec.
proc. StartInfo. WorkingDirectory = Me. WorkingDir.
그렇지 않은 경우 proc. WaitForExit (My. Settings. WallGenTimeout) 그런 다음.
새로운 MsExecuteException을 던집니다. (My. Settings. WallGenModule, & quot; WallGen의 실행이 완료되기를 기다리는 시간 초과 & quot;)
If Not System. IO. File. Exists (szPath) 그런 다음.
새로운 MsExecuteException 던짐 (My. Settings. WallGenModule, & quot; WallGen 결과 파일이 생성되지 않았습니다 & quot;)
Process. StandardOuput 속성의 발언 섹션을 읽는 것이 좋습니다.
HTH Tom Shelton.
Cor Ligthert MVP의 답변으로 제안 됨 2010 년 2 월 2 일 화요일 오후 6:06 Martin_Xie 중재자의 답변으로 표시 Monday, February 08, 2010 3:12 AM.
이게 도움이 되나요? 더 궁금한 점이 있으시면 언제든지 저희에게 알려주십시오.
게다가, 여기에 응용 프로그램의 표준 입력 - 출력을 리디렉션하는 방법을 설명하는 한 문서가 있습니다.
친절한 도움과 지원에 감사드립니다.
지원에 대한 의견이 있으시면 msdnmgmicrosoft에 문의하십시오.
답변이 도움이되지 않는다면 대답을 표시하고 표시를 해제하면 회신을 답변으로 표시해야합니다.
Microsoft는 Msdn 웹 사이트에 대한 귀하의 의견을 이해하기 위해 온라인 설문 조사를 실시하고 있습니다. 참여를 선택하면 Msdn 웹 사이트를 탈퇴 할 때 온라인 설문 조사가 제공됩니다.
Process. StandardOuput 속성의 발언 섹션을 읽는 것이 좋습니다.
HTH Tom Shelton.
Cor Ligthert MVP의 답변으로 제안 됨 2010 년 2 월 2 일 화요일 오후 6:06 Martin_Xie 중재자의 답변으로 표시 Monday, February 08, 2010 3:12 AM.
모든 답장.
그것은 당신의 통제하에 있습니다. 작성한 래퍼의 코드는 무엇이며, 세 번째 모듈의 래퍼에 사용한 코드는 두 개의 다른 모듈에 대한 래퍼에 사용한 코드와 어떻게 다릅니 까?
Public Sub Execute ()
System. IO. Stream으로 Dim fs.
새 프로세스로 Dim proc.
문자열로 Dim szResult.
szPath를 String으로 희미하게합니다.
'*** 볼 데이터를 생성하십시오.
szPath = Me. WorkingDir & amp; 내. Settings. BallGenResultFile.
만약 내가. KillBeforeExecute 그럼.
ex로 FileNotFoundException을 잡아라.
'무시 파일을 찾을 수 없습니다.'
proc. StartInfo. FileName = 내. Settings. BallGenExec.
proc. StartInfo. WorkingDirectory = Me. WorkingDir.
그렇지 않은 경우 proc. WaitForExit (My. Settings. BallGenTimeout) 그런 다음.
새로운 MsExecuteException 던짐 (My. Settings. BallGenModule, & quot; BallGen이 실행을 완료하기를 기다리는 시간 초과 & quot;)
String pare (szResult. Trim, My. Settings. BallGenNormalExit. Trim, True) & lt; & gt; 0 그럼.
새로운 MsExecuteException 던지기 (My. Settings. BallGenModule, szResult)
If Not System. IO. File. Exists (szPath) 그런 다음.
새로운 MsExecuteException 던짐 (My. Settings. BallGenModule, & quot; BallGen 결과 파일이 생성되지 않았습니다 & quot;)
'*** 공은 성공할 수 있습니다.
*** 벽에 데이터를 생성하십시오.
szPath = Me. WorkingDir & amp; 내. Settings. WallGenResultFile.
만약 내가. KillBeforeExecute 그럼.
ex로 FileNotFoundException을 잡아라.
'무시 파일을 찾지 못했습니다'예외, 다른 모든 예외를 던집니다.
proc = 새로운 프로세스.
proc. StartInfo. FileName = 내. Settings. WallGenExec.
proc. StartInfo. WorkingDirectory = Me. WorkingDir.
그렇지 않은 경우 proc. WaitForExit (My. Settings. WallGenTimeout) 그런 다음.
새로운 MsExecuteException을 던집니다. (My. Settings. WallGenModule, & quot; WallGen의 실행이 완료되기를 기다리는 시간 초과 & quot;)
If Not System. IO. File. Exists (szPath) 그런 다음.
새로운 MsExecuteException 던짐 (My. Settings. WallGenModule, & quot; WallGen 결과 파일이 생성되지 않았습니다 & quot;)
Process. StandardOuput 속성의 발언 섹션을 읽는 것이 좋습니다.
HTH Tom Shelton.
Cor Ligthert MVP의 답변으로 제안 됨 2010 년 2 월 2 일 화요일 오후 6:06 Martin_Xie 중재자의 답변으로 표시 Monday, February 08, 2010 3:12 AM.
이게 도움이 되나요? 더 궁금한 점이 있으시면 언제든지 저희에게 알려주십시오.
게다가, 여기에 응용 프로그램의 표준 입력 - 출력을 리디렉션하는 방법을 설명하는 한 문서가 있습니다.
친절한 도움과 지원에 감사드립니다.
지원에 대한 의견이 있으시면 msdnmgmicrosoft에 문의하십시오.
답변이 도움이되지 않는다면 대답을 표시하고 표시를 해제하면 회신을 답변으로 표시해야합니다.
Microsoft는 Msdn 웹 사이트에 대한 귀하의 의견을 이해하기 위해 온라인 설문 조사를 실시하고 있습니다. 참여를 선택하면 Msdn 웹 사이트를 탈퇴 할 때 온라인 설문 조사가 제공됩니다.
No comments:
Post a Comment