C ++:文件打开调用失败

时间:2011-03-09 14:29:38

标签: c++ linux

我在我的一个库函数中有以下代码,我在循环中多次调用它。经过大量的迭代后,我发现open返回-1,它不应该有,因为之前的迭代工作正常。可能是什么原因。如何获得有关错误的更多详细信息。?

int mode;
 if (fileLen == 0)
      mode = O_TRUNC | O_RDWR | O_CREAT;
 else
      mode = O_RDWR;
 myFilDes = open (fName, mode, S_IRUSR | S_IWUSR);

编辑:在每次迭代结束后,我调用一个库,公开哪个内部调用close (myFilDes);

2 个答案:

答案 0 :(得分:5)

perror是将errno映射到字符串并将其打印到stderr的标准函数:

if (myFilDes == -1)
    perror("Unable to open file: ");

man errno / man perror / man strerror获取更多信息。

答案 1 :(得分:1)

你也在关闭这些手柄吗?在开始失败之前,您是否达到了特定数量的公开呼叫?

errno 变量应该有关于失败的其他信息。请参阅:http://linux.die.net/man/2/open