int fd;
fd=io->fd.open(filename,O_RDONLY|O_BINARY);
string_s=strerror(error);
結果是confusing.fd = 3,而string_s是「沒有這樣的文件或目錄」。 我相信,文件名是所有right.But爲什麼fd是不是-1文件描述符返回錯誤值
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