我有一个 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
到底是怎么回事?