2011-12-15 2 views
2

그래서 일부 코드에 대한 자동 테스트를 만들고 있습니다. "cmdLineProc"라는 명령 행에서 실행할 수있는 실행이 있습니다.CreateProcess를 사용할 때 프로세스에서 오류 코드 반환

Im은 내 테스트 프로그램을 C++로 만듭니다 (Python을 사용하지 않거나 우리가 사용하는 API가 이러한 테스트의 속도를 높임). 명령 줄 인수는 테스트에서 문자열로 만들어지고 CreateProcess를 사용하여 cmdLineProc을 실행하는 함수로 전달됩니다. 이 작동합니다. 나는 cmdLineProc을 호출 할 수 있으며 작동하고 테스트가 통과합니다. 그러나 오류가 반환되지 않은 경우에만.

테스트 할 때 필자가 예상 한대로 실패했는지 확인해야합니다. 이러한 경우 cmdLineProc은 오류 값을 반환합니다.

매개 변수가있는 명령 줄에서 cmdLineProc을 실행하면 "오류, 실패 : -3"이라는 메시지가 나타납니다. 여기서 -3은 오류 코드입니다. 하지만 CreateProcess를 사용하여 C++ 테스트를 실행하면 문제가 발생합니다. CreateProcess가 실패하고 -1을 반환하면 실패했다는 코드가 반환됩니다. 왜 실패했는지 알 수 없습니다. GetExitCodeProcess를 사용하여 cmdLineProc의 종료 상태를 가져옵니다.

누구나이 메서드를 사용하여 cmdLineProc에서 오류 값을 반환 할 수 있는지를 알고 있습니까? 그렇지 않다면 아무도 이것을 구현하는 방법을 모른다.

+0

'GetLastError()' – Abyx

+0

GetLastError가 작동하지 않습니다. 이것은 단지 0을 반환합니다. 이것은 처음으로이 물건을 사용했지만, GetLastError()를 코드의 다른 위치에 두었습니다. 0을 반환 할 때마다. – discodowney

+0

Sory. 나는'CreateProcess'가 실패했다고 생각했지만, 0이 아닌 값 (-1)을 반환하면 성공을 의미합니다. – Abyx

답변

0

GetExitCodeProcess는 실행 프로세스의 종료 코드를 반환합니다. 프로그램을 실행할 때 다른 오류가 표시되면 작성된 프로세스는 다른 오류를 stdout에 쓰는 것입니다.

그런 경우 생성 된 프로세스의 출력을 구문 분석해야합니다.

어떻게 완료되었는지 확인할 수 있습니다. here.

+0

오케이. 도움 주니어들에게 건배. 아프다. 감사. – discodowney

관련 문제