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