檔案描述符就緒的條件(可讀可寫)

2021-10-03 01:19:19 字數 653 閱讀 4776

下列情況下,socket可讀:

1.socket核心接收緩衝區中的位元組數大於或者大於等於其低水位的標記so_rcvlowat標記。此時,我們可以無阻塞的該socket,並且讀操作的返回值大於0;

2.socket通訊的對方關閉連線,此時對該socket的讀操作將返回0;

3.監聽socket上有新的連線請求;

4.socket上有未處理的錯誤。此時我們可以使用getsockopt來讀取和清除錯誤

下列情況下,socket可寫:

1.socket核心傳送緩衝區中的可用位元組數大於或者等於其低水位標記so_sndlowat,此時我們可以無阻塞的讀該socket,並且返回值大於0;

2.socket的寫操作被關閉,對寫操作被關閉的socket執行寫操作會觸發sigpipe的訊號;

3.socket使用非阻塞connect連線成功或者失敗之後;

4.socket上有未處理的錯誤,此時我們可以通過getsockopt來讀取和清除該錯誤。

網路程式中,select能處理的異常情況只有一種:socket上接受到帶外資料

socket 描述符就緒條件

附註 我們一直在討論等待某個描述符準備好i o 讀或寫 或等待其上發生乙個待處理的異常條件 帶外資料 對於普通檔案的描述符,讀 寫和異常條件總是返回準備好 apue p407 而對於套接字就緒狀態的判斷如下 一 滿足下列四個條件中的任何乙個時,乙個套接字準備好讀。監聽socket 該套接字是乙個監聽...

select系統呼叫 檔案描述符就緒條件

select系統呼叫原型如下 include intselect int nfds,fd set readfds,fd set writefds,fd set exceptfds,struct timeval timeout 引數readfds,writefds,exceptfds引數分別指向可讀 ...

mysql 檔案描述符 檔案描述符

toc 首先,linux的世界裡一切皆為檔案,無論是裝置還是乙個socket連線。檔案又可分為 普通檔案 目錄檔案 鏈結檔案和裝置檔案。檔案描述符 file descriptor 是核心為了高效管理已被開啟的檔案所建立的索引,其是乙個非負整數 通常是小整數 用於指代被開啟的檔案,所有執行i o操作的...