由于打开的文件太多,ostream无法打开文件

时间:2011-10-04 06:44:51

标签: c++ ostream

以下是我称之为一次的功能!我可以看到它打开文件一次! 但我无法理解为什么它返回“太多打开的文件”。它有与矢量大小有关的任何内容吗?

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();
}

2 个答案:

答案 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”