ostream打开文件失败,因为打开的文件太多

ostream fails to open the file because of too many open Files

本文关键字:文件 太多 因为 失败 ostream      更新时间:2023-10-16

下面是我调用它一次的函数!正如我所看到的,它打开文件一次!但我不明白为什么它返回"太多打开的文件"。它和向量的大小有关系吗?

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

Too many open files是计算机的一个问题(对于一次可以打开多少文件有单个用户和全局限制),您可以使用像lsof这样的程序来查看当前打开的文件。

尝试重新启动计算机并再次运行程序。

Try

for ( int i=0; i< result.size(); i++)
**{**tempStr += (*result[i]).GetResult();**}**
outStream.open(outPath.c_str(), std::ios::app );

顺便说一句,考虑用"for_each"方法替换"for"