У меня есть скрипт bash, результаты которого я читаю в моей программе. Ptr
- это простая popen()
оболочка.
bool getResult(const char* path){
Ptr f(path);
char buf[1024];
while (fgets(buf, sizeof(buf), f) == 0) {
if(errno == EINTR)
continue;
log.error("Error (%d) : %s",errno,path);
return false;
}
...
return true;
}
Это прекрасно работает, но Ptr f(path)
не является безопасным для исключения, поэтому я заменяю его на:
Ptr f; // empty constructor, does nothing
char buf[1024];
try{
Ptr f(path);
}catch(Exception& e){
vlog.error("Could not open file at %s",path);
return false;
}
При запуске (и файл существует) я получаю следующую ошибку:
/etc/my_script: line 165: echo: write error: Broken pipe
Эта строка сценария просто:
echo $result
Что происходит?