以下是我称之为一次的功能!我可以看到它打开文件一次! 但我无法理解为什么它返回“太多打开的文件”。它有与矢量大小有关的任何内容吗?
void WriteResult(std::vector<result*> result)
{
std::string tempStr = "";
std::string outPath = "/my/path/similarityScores.txt" ;
for ( int i=0; i< result.size(); i++)
tempStr += (*result[i]).GetResult();
outStream.open(outPath.c_str(), std::ios::app );
if (!outStream)
std::cout << std::strerror(errno) << '\n';
outStream << tempStr;
outStream.close();
}
答案 0 :(得分:-1)
Too many open files
是计算机的问题(每个用户和全局限制一次可以打开多少个文件)您可以使用lsof
之类的程序查看哪些文件目前是开放的。
尝试重新启动计算机并再次运行程序。
答案 1 :(得分:-3)
尝试
for ( int i=0; i< result.size(); i++)
**{**tempStr += (*result[i]).GetResult();**}**
outStream.open(outPath.c_str(), std::ios::app );
顺便说一下,考虑用“for_each”stl方法替换“for”