У меня есть следующая функция для выполнения внешней программы:
std::string exec(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;
}
Можно ли обрабатывать сбой как исключение таким образом (я использую dir в качестве примера, он не падает)?
std::ostringstream ossCmd;
ossCmd << "dir";
std::string cmd = ossCmd.str();
try
{
std::string str = exec(cmd.c_str());
}
catch(...)
{
}
Я не могу получить исключение, если внешнее приложение завершается с ошибкой внешнего сбоя. Пример: "dir перестал работать"