Wednesday, 28 February 2018

대기열 프로세스 redirectstandardoutput 처리


리디렉션 표준 출력 처리 대기
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 웹 사이트를 탈퇴 할 때 온라인 설문 조사가 제공됩니다.

No comments:

Post a Comment