讀函式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,表示已到達檔案尾或是無可讀取的資料 但在...