Wie erfassen Sie die exit_code und stderr des Befehls, der ausgeführt wird in C++?

Ich Schreibe ein c++ - Programm, das wird ausgeführt, und die Ausgänge (in Echtzeit) ein shell-Skript, makefile oder nur ein anderes Programm. Allerdings würde ich gerne mein Programm zurück, anders, wenn es Fehler oder kein Fehler.

#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;



}

ist was ich habe, so weit.

Sagen wir, das script lief make ein Programm erstellen und es gab einen Fehler, wie so

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
  • Ist es möglich für mich zu wissen, dass diese beendet wird mit dem Fehler?

    • Nicht, dass die Ausfahrt mit code else than 0 da ist es ein Fehler?

    • Ist, dass der Letzte Teil ausgegeben, die in stderr?

Wenn man bedenkt, dass make beendet mit code nicht 0sagen wir mal 1und es Ausgang in stderr ist es mir nicht möglich zu erfassen, diese exit-codes und Fehlermeldung am Ende?

Wie kann ich erfassen der exit-code und die stderr nach Ausgabe der Ergebnisse des Programms und der Rückkehr der exit code/stderr in der Funktion?

InformationsquelleAutor der Frage Logan | 2013-02-25

Schreibe einen Kommentar