我有一个在bash脚本中被调用的python脚本,如下所示:
python3 CheckRef.py --reference $EXPECTED --result $RESULT.npy
echo "return code = $?"
该脚本从python脚本打印正确的返回码。例如,如果python脚本返回254
,它将打印-2
。
但是,当我在c ++程序中调用bash脚本时,返回码为空。它应该返回-2
。
testClass test;
auto result = test.execute(command.c_str());
std::cout << "result is " << result << std::endl;
有人可以告诉我我在做什么错吗?
这是函数execute()
std::string testClass::execute(const char* cmd) {
char buffer[128];
std::string result = "";
FILE* pipe = popen(cmd, "r");
if (!pipe) throw std::runtime_error("popen() failed!");
try {
while (!feof(pipe)) {
if (fgets(buffer, 128, pipe) != NULL)
result += buffer;
}
} catch (...) {
pclose(pipe);
throw;
}
pclose(pipe);
return result;
}
答案 0 :(得分:1)
您的execute
函数返回一个字符串,其中包含命令的输出,而不是终止代码。
该进程的终止状态代码由pclose
返回。当前,您放弃了对pclose