나는 쉘 스크립트, 메이크 파일 또는 다른 프로그램을 (실시간으로) 실행하고 출력하는 C++ 프로그램을 작성 중이다. 그러나 오류가 있거나 오류가없는 경우 내 프로그램을 다르게 반환하고 싶습니다.C++에서 실행되는 명령의 exit_code 및 stderr를 캡처하는 방법은 무엇입니까?
#include "execxi.h"
using namespace std;
int execXI::run(string command)
{
FILE *in;
char buff[512];
// is this the check for command execution exited with not 0?
if(!(in = popen(command.c_str(), "r"))){
// I want to return the exit code and error message too if any
return 1;
}
// this part echoes the output of the command that's executed
while(fgets(buff, sizeof(buff), in)!=NULL){
cout << buff;
}
pclose(in);
return 0;
}
내가 지금까지 가지고있는 것입니다.
은의이 스크립트 프로그램을 구축 할 make
를 실행한다고 가정 해 봅시다과 그렇게
on_target_webkit_version out/Release/obj/gen/webkit_version.h
Traceback (most recent call last):
File "../build/webkit_version.py", line 107, in <module>
sys.exit(main())
File "../build/webkit_version.py", line 103, in main
return EmitVersionHeader(*sys.argv[1:])
File "../build/webkit_version.py", line 86, in EmitVersionHeader
webkit_revision = GetWebKitRevision(webkit_dir, version_file)
File "../build/webkit_version.py", line 60, in GetWebKitRevision
version_info = lastchange.FetchVersionInfo(
AttributeError: 'module' object has no attribute 'FetchVersionInfo'
make: *** [out/Release/obj/gen/webkit_version.h] Error 1
과 같은 오류가 날이 오류로 종료 것을 아는 가능했다?
이 코드는 오류 코드
else than 0
으로 끝나나요?마지막 부분은
stderr
으로 출력됩니까?
make
코드하지 0
로 종료 점을 감안하면, 이제 1
말을하자, 나를 결국이 종료 코드와 오류 메시지를 캡처하는 stderr
의 출력이 불가능하다 그것?
어떻게 프로그램의 결과를 출력 후 종료 코드와 stderr
를 캡처하고, 함수에서 exit code
/stderr
을 반환 할 수 있습니다?
만일 pclose는 종료 상태를 반환합니다. –
http://jineshkj.wordpress.com/2006/12/22/how-to-capture-stdin-stdout-and-stderr-of-child-program/ –