gpt4 book ai didi

c++ - bash 脚本在使用 popen() 时不将返回码返回给调用 C++ 程序

转载 作者:行者123 更新时间:2023-11-30 04:56:23 24 4
gpt4 key购买 nike

<分区>

我有一个在 bash 脚本中调用的 python 脚本,如下所示:

python3 CheckRef.py --reference $EXPECTED --result $RESULT.npy
echo "return code = $?"

该脚本打印来自 python 脚本的正确返回码。例如,如果 python 脚本返回 -2,它会打印 254

但是,当我在 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;
}

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com