文件描述符返回错误值
int fd;
fd=io->fd.open(filename,O_RDONLY|O_BINARY);
string_s=strerror(error);
结果是confusing.fd = 3,而string_s是“没有这样的文件或目录”。 我相信,文件名是所有right.But为什么fd是不是-1文件描述符返回错误值
如果一个函数调用不会失败的errno
值不确定。在检查errno
之前,您必须检查功能是否失败。
如何检查C语言的开放函数?io-> fd.open只是C的函数。 – user7896331
@ user7896331通过检查函数是否返回了'-1'。例如。 'if(fd == -1){printf(“%s \ n”,strerror(errno)); }' –
errno
从来没有通过任何库调用清除。该C11 n1570标准草案说以下(7.5p3):
errno的初始线程的值是在程序启动时零(错误的其他线程的初始值是一个不确定的值),但从来没有通过任何库函数设置为零。如果errno的使用没有记录在本国际标准中对函数的描述中,则errno的值可以通过库函数调用设置为非零值,无论是否存在错误。
也就是说,errno
与先前失败的系统调用相比具有非零值; open
成功。
您可以随时设置errno
0明确自己:
errno = 0;
fd = io->fd.open(filename, O_RDONLY | O_BINARY);
和成功的库调用后,应保持0。
如果文件名称没问题,为什么要fd是-1? – Gerhardh