프로세스 waitforexit 리턴 코드
프로세스 대기 행렬 반환 코드
App Store를 통해 가져 오기 우리의 응용 프로그램 에서이 게시물을 읽으십시오!
C #을 사용하여 CMD에서 Exitcode 얻기
나는 다음 코드를 사용하여 PATH, EXECUTABLE NAME 및 ARGUMENTS를 배치 파일에 작성하고 C #을 사용하여 CMD를 통해 실행합니다. 문제는 배치 파일을 실행 한 후 애플리케이션 dosent가 시작되는 경우입니다. 그리고 C # 코드는 나에게 예외 나 알림을줍니다.
어떤 명령이 제대로 실행되었는지 확인하기 위해 CMD에서 Exitcode를 얻고 싶습니다. 종료 코드는 어떻게 결정합니까?
Batchfile 내부 스크립트 : [Notepads. exe가 오류를 얻는 데는 잘못되었습니다.]
""% ERRORLEVEL % "=="1 "종료 / B 1"
일괄 처리 스크립트 레이어를 사용하고 있기 때문에 일부 컨트롤을 잃어 버리기 때문에 나중에 실행하는 배치 파일을 만드는 대신 프로세스를 직접 실행하는 것이 훨씬 쉽습니다.
이 코드를 대신 사용하십시오.
나는 많은 프로젝트에서 그것을 사용하고 그것은 매력처럼 작동합니다.
배치 스크립트 경로를 사용해야하는 경우 배치 스크립트가 exitcode를 올바르게 설정했는지 확인하십시오.
Process. ExitCode 속성이 원하는 것을 제공하지 않습니까? 분명히 배치 파일 자체가 올바른 종료 코드로 종료되고 실행중인 응용 프로그램을 미러링해야합니다.
그런데 using 문을 사용하여 예외가 발생하더라도 관련 스트림이 모두 닫혀 있는지 확인해야합니다. 동기 IO 대신 애플리케이션의 데이터에 비동기로 반응하는 방법을 제안합니다. 동기 입출력을 고수한다면 표준 오류에서 다른 스레드가 읽어야합니다. 그렇지 않으면 프로세스가 많은 양의 데이터를 표준 오류에 쓰면 버퍼를 지우는 것을 기다리는 블록이 생깁니다.
프로세스 대기 행렬 반환 코드
App Store를 통해 가져 오기 우리의 응용 프로그램 에서이 게시물을 읽으십시오!
-Wait 대신 Start-Process 및 WaitForExit을 사용하여 ExitCode를 얻습니다.
PowerShell에서 프로그램을 실행하고 Exit를 기다린 다음 ExitCode에 액세스 할 수 있지만 많은 행운이 없습니다. 나는 백그라운드에서 계속할 수있는 처리가 필요하기 때문에 Start-Process와 함께 사용하고 싶지 않다.
다음은 간단한 테스트 스크립트입니다.
이 스크립트를 실행하면 메모장이 시작됩니다. 이 작업을 수동으로 닫으면 종료 코드가 인쇄되고 - wait를 사용하지 않고 다시 시작됩니다. 이것이 종료되면 ExitCode가 제공되지 않습니다.
프로그램 시작과 종료를 기다리는 사이에 추가 처리를 수행 할 수 있어야하므로 - Wait을 사용할 수 없습니다. 어떤 방법으로이 작업을 수행 할 수 있으며 여전히이 프로세스에서. ExitCode 속성에 액세스 할 수 있습니까?
네가 할 수있는 두 가지 일은 내가 생각하기에.
System. Diagnostics. Process 개체를 수동으로 만들고 시작 프로세스를 건너 뜁니다. 백그라운드 작업에서 실행 파일을 실행합니다 (비 대화식 프로세스에만 해당).
다음 중 하나를 수행하는 방법은 다음과 같습니다.
여기서 기억해야 할 두 가지가 있습니다. 하나는 - PassThru 인수를 추가하는 것이고 두 가지는 - Wait 인수를 추가하는 것입니다. 이 결함으로 인해 wait 인수를 추가해야합니다. connect. microsoft / PowerShell /feedback/details/520554/start-process-does-not-return-exitcode-property.
이렇게하면 프로세스 객체가 다시 전달되고 해당 객체의 ExitCode 속성을 볼 수 있습니다. 다음은 그 예입니다.
-PassThru 또는 - Wait없이 실행하면 아무 것도 출력하지 않습니다.
위의 마지막 제안을 시도하면서 더 간단한 해결책을 발견했습니다. 내가해야만하는 것은 프로세스 핸들을 캐시하는 것이었다. 내가 그렇게하자마자, $ process. ExitCode가 올바르게 작동했습니다. 프로세스 핸들을 캐시하지 않으면 $ process. ExitCode가 null입니다.
또는 이것을 추가하십시오.
이 코드를 사용하면 System. Diagnostics. Process. Start ()를 직접 사용하여 수행 할 수없는 리디렉션 된 출력 / 오류 스트림을 PowerShell에서 처리하도록 할 수 있습니다.
내 과정이 끝났지 만 '- 잠깐'옵션은 나를 막아주는 것처럼 보였다.
나는 Adrian의 솔루션을 시도하고 그것을 작동합니다. 하지만 프로세스 핸들을 가져 오는 부작용에 의존하는 대신 Wait-Process를 사용했습니다.
프로세스 대기 행렬 반환 코드
App Store를 통해 가져 오기 우리의 응용 프로그램 에서이 게시물을 읽으십시오!
C #에서 외부 실행 파일을 시작하고 프로세스가 끝나면 종료 코드를 얻는 방법 [duplicate]
일부 작업을 수행하려면 명령 줄에서 실행중인 외부 실행 파일을 시작하고 싶습니다. 작업이 끝나면 반환되는 오류 코드를 확인하고 싶습니다. 내가 어떻게 해?
abatishchev, AxelEckenberger, Stu, Mark, APC에서 복제본으로 표시 Jan 27 '13 at 22:58.
이 질문은 전에 질문을 받았고 이미 답변이 있습니다. 이러한 답변으로 귀하의 질문에 완전히 답변하지 못하면 새로운 질문을하십시오.
Process. Start () 메서드를 사용할 수 있습니다.
어떻게 처리 하느냐에 따라 처리를 시작하기위한 인스턴스 및 정적 메소드가 모두 있습니다.
여기서 MSDN 설명서를 볼 수 있습니다. C #에서 시작된 외부 프로세스를 조작하고 모니터링하는 데 필요한 모든 것을 설명합니다.
Process 클래스의 Start static 메소드를 사용할 수 있습니다. 예를 들어 최소화 된 Internet Explorer를 시작하고 예제로 이동하십시오.
반환 값과 관련하여 작업이 성공하면 메서드는 true를 반환하고 그렇지 않으면 Win32Exception이 발생합니다. 해당 클래스의 NativeErrorCode 멤버를 검사하여 해당 오류와 관련된 Win32 오류 코드를 가져올 수 있습니다.
Process. ExitCode 속성
API 참조 문서에는 새로운 홈이 있습니다. 새로운 경험을 보려면 docs. microsoft의 API 브라우저를 방문하십시오.
연결된 프로세스가 종료 될 때 지정한 값을 가져옵니다.
어셈블리 : System (System. dll)
자산 가치.
연결된 프로세스가 종료 될 때 지정한 코드입니다.
프로세스가 종료되지 않았습니다.
프로세스 핸들이 유효하지 않습니다.
원격 컴퓨터에서 실행중인 프로세스의 ExitCode 속성에 액세스하려고합니다. 이 속성은 로컬 컴퓨터에서 실행중인 프로세스에서만 사용할 수 있습니다.
ExitCode를 사용하여 종료 할 때 시스템 프로세스가 반환 한 상태를 가져옵니다. main () 프로 시저의 정수 반환 값과 매우 유사한 종료 코드를 사용할 수 있습니다.
프로세스의 ExitCode 값은 해당 프로세스의 응용 프로그램 개발자가 구현 한 특정 규칙을 반영합니다. 종료 코드 값을 사용하여 코드에서 결정을 내리는 경우 응용 프로그램 프로세스에서 사용하는 종료 코드 규칙을 알고 있어야합니다.
개발자는 일반적으로 ExitCode 값이 0 인 성공적인 종료를 나타내고 호출 메서드가 비정상적인 프로세스 종료의 원인을 식별하는 데 사용할 수있는 0이 아닌 값으로 오류를 지정합니다. 이 지침을 따를 필요는 없지만 관례입니다.
프로세스가 종료되기 전에 ExitCode를 가져 오려고하면 예외가 throw됩니다. 먼저 연결된 프로세스가 종료되었는지 확인하기 위해 HasExited 속성을 검사하십시오.
표준 출력이 비동기 이벤트 처리기로 리디렉션되면 HasExited가 true를 반환 할 때 출력 처리가 완료되지 않을 수도 있습니다. 비동기 이벤트 처리가 완료되었는지 확인하려면 HasExited를 확인하기 전에 매개 변수를 사용하지 않는 WaitForExit () 오버로드를 호출하십시오.
CloseMainWindow 또는 Kill 메서드를 사용하면 연결된 프로세스를 종료 할 수 있습니다.
연결된 프로세스가 종료 될 때 통보받는 방법에는 동기식 및 비동기식 두 가지가 있습니다. 동기 통지는 관련 구성 요소가 종료 될 때까지 WaitForExit 메소드를 호출하여 응용 프로그램의 처리를 일시 중지합니다. 비동기 알림은 Exited 이벤트를 사용합니다. 비동기 통지를 사용할 때 프로세스 구성 요소가 프로세스가 종료되었다는 통지를 수신하려면 EnableRaisingEvents를 true로 설정해야합니다.
다음 예제는 메모장의 인스턴스를 시작합니다. 그런 다음 관련 프로세스의 다양한 속성을 검색하고 표시합니다. 이 예는 프로세스가 종료 될 때이를 감지하고 프로세스의 종료 코드를 표시합니다.
즉각적인 호출자에 대한 완전한 신뢰. 이 멤버는 부분적으로 신뢰할 수있는 코드에서 사용할 수 없습니다.
App Store를 통해 가져 오기 우리의 응용 프로그램 에서이 게시물을 읽으십시오!
-Wait 대신 Start-Process 및 WaitForExit을 사용하여 ExitCode를 얻습니다.
PowerShell에서 프로그램을 실행하고 Exit를 기다린 다음 ExitCode에 액세스 할 수 있지만 많은 행운이 없습니다. 나는 백그라운드에서 계속할 수있는 처리가 필요하기 때문에 Start-Process와 함께 사용하고 싶지 않다.
다음은 간단한 테스트 스크립트입니다.
이 스크립트를 실행하면 메모장이 시작됩니다. 이 작업을 수동으로 닫으면 종료 코드가 인쇄되고 - wait를 사용하지 않고 다시 시작됩니다. 이것이 종료되면 ExitCode가 제공되지 않습니다.
프로그램 시작과 종료를 기다리는 사이에 추가 처리를 수행 할 수 있어야하므로 - Wait을 사용할 수 없습니다. 어떤 방법으로이 작업을 수행 할 수 있으며 여전히이 프로세스에서. ExitCode 속성에 액세스 할 수 있습니까?
네가 할 수있는 두 가지 일은 내가 생각하기에.
System. Diagnostics. Process 개체를 수동으로 만들고 시작 프로세스를 건너 뜁니다. 백그라운드 작업에서 실행 파일을 실행합니다 (비 대화식 프로세스에만 해당).
다음 중 하나를 수행하는 방법은 다음과 같습니다.
여기서 기억해야 할 두 가지가 있습니다. 하나는 - PassThru 인수를 추가하는 것이고 두 가지는 - Wait 인수를 추가하는 것입니다. 이 결함으로 인해 wait 인수를 추가해야합니다. connect. microsoft / PowerShell /feedback/details/520554/start-process-does-not-return-exitcode-property.
이렇게하면 프로세스 객체가 다시 전달되고 해당 객체의 ExitCode 속성을 볼 수 있습니다. 다음은 그 예입니다.
-PassThru 또는 - Wait없이 실행하면 아무 것도 출력하지 않습니다.
위의 마지막 제안을 시도하면서 더 간단한 해결책을 발견했습니다. 내가해야만하는 것은 프로세스 핸들을 캐시하는 것이었다. 내가 그렇게하자마자, $ process. ExitCode가 올바르게 작동했습니다. 프로세스 핸들을 캐시하지 않으면 $ process. ExitCode가 null입니다.
또는 이것을 추가하십시오.
이 코드를 사용하면 System. Diagnostics. Process. Start ()를 직접 사용하여 수행 할 수없는 리디렉션 된 출력 / 오류 스트림을 PowerShell에서 처리하도록 할 수 있습니다.
내 과정이 끝났지 만 '- 잠깐'옵션은 나를 막아주는 것처럼 보였다.
나는 Adrian의 솔루션을 시도하고 그것을 작동합니다. 하지만 프로세스 핸들을 가져 오는 부작용에 의존하는 대신 Wait-Process를 사용했습니다.
Comments
Post a Comment