Я пишу С++-программу, которая выполняет и выводит (в режиме реального времени) оболочку script, makefile или только другую программу. Однако я хотел бы, чтобы моя программа возвращалась по-разному, когда есть ошибки или ошибки.
#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 executed
    while(fgets(buff, sizeof(buff), in)!=NULL){
        cout << buff;
    }
    pclose(in);
    return 0;
}
- это то, что у меня есть.
Скажем, этот script выполнил 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 в функцию?
