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