當前位置:編程學習大全網 - 網站源碼 - linux下c語言編程read()函數的問題

linux下c語言編程read()函數的問題

返回-1的時候,要根據錯誤碼來判斷原因,請看下面的函數說明:

表頭文件 #include<unistd.h>

定義函數 ssize_t read(int fd,void * buf ,size_t count);

函數說明 read()會把參數fd 所指的文件傳送count個字節到buf指針所指的內存中。若參數count為0,則read()不會有作用並返回0。返回值為實際讀取到的字節數,如果返回0,表示已到達文件尾或是無可讀取的數據,此外文件讀寫位置會隨讀取到的字節移動。

附加說明 如果順利read()會返回實際讀到的字節數,最好能將返回值與參數count 作比較,若返回的字節數比要求讀取的字節數少,則有可能讀到了文件尾、從管道(pipe)或終端機讀取,或者是read()被信號中斷了讀取動作。當有錯誤發生時則返回-1,錯誤代碼存入errno中,而文件讀寫位置則無法預期。

錯誤代碼 EINTR 此調用被信號所中斷。 EAGAIN 當使用不可阻斷I/O 時(O_NONBLOCK),若無數據可讀取則返回此值。 EBADF 參數fd 非有效的文件描述詞,或該文件已關閉。

  • 上一篇:彩虹六號壹進入遊戲,battleye就停止了發球。
  • 下一篇:博客代碼修改問題
  • copyright 2024編程學習大全網