read, write 函式用法

2021-06-16 08:15:21 字數 737 閱讀 2476

讀函式read 

ssize_t read(int fd,void *buf,size_t nbyte) 

read函式是負責從fd中讀取內容.

成功時,read返回實際所讀的位元組數,如果返回的值是0,表示已經讀到檔案的結束了.

小於0表示出現了錯誤.

如果錯誤為eintr說明讀是由中斷引起的, 

如果是econnrest表示網路連線出了問題.

寫函式write 

ssize_t write(int fd,const void *buf,size_t nbytes)

write函式將buf中的nbytes位元組內容寫入檔案描述符fd.成功時返回寫的位元組數.失敗時返回-1. 並設定errno變數. 在網路程式中,當我們向套接字檔案描述符寫時有倆種可能. 

1)write的返回值大於0,表示寫了部分或者是全部的資料. 

2)返回的值小於0,此時出現了錯誤.我們要根據錯誤型別來處理.  如果錯誤為eintr表示在寫的時候出現了中斷錯誤. 

如果為epipe表示網路連線出現了問題(對方已經關閉了連線).

舉例:strcpy(cmd_buf, "at+esims\r\n");

write(fd, cmd_buf, strlen(cmd_buf));

logd(tag "send at+esims\n");

usleep(halt_time);

read(fd, rsp_buf, buf_size);

read, write 函式用法

讀函式read ssize t read int fd,void buf,size t nbyte read函式是負責從fd中讀取內容.成功時,read返回實際所讀的位元組數,如果返回的值是0,表示已經讀到檔案的結束了.小於0表示出現了錯誤.如果錯誤為eintr說明讀是由中斷引起的,如果是econn...

利用read write函式實現copy功能

ssize t read int fd,void buf,size t count 引數 fd 檔案描述符 buf 存資料的緩衝區 count 緩衝區的大小 返回值 0 讀到檔案末尾 成功 0 實際從fd讀到的資料大小 失敗 1,並設定errno 將檔案設定為非阻塞,當read沒有資料時返回 1 且...

封裝非阻塞模式下的read,write函式

在非阻塞模式下當read讀完fd中所有內容後將返回 1,並且errno設定為eagain read函式說明 read 會把引數fd 所指的檔案傳送count個位元組到buf指標所指的記憶體中。若引數count為0,則read為實際讀取到的位元組數,如果返回0,表示已到達檔案尾或是無可讀取的資料 但在...