C ++:文件打开呼叫失败

我在我的库函数之一,我在一个循环多次调用下面的代码。 经过大量的迭代,我发现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);

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

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

男子errno /男子perror /男子strerror更多的信息。

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

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