2012-03-25 18 views
0

爲什麼選擇系統調用只有文件描述符的上限而不是下限?

int select(
      int nfds, 
      fd_set *readfds, 
      fd_set *writefds, 
      fd_set *exceptfds, 
      struct timeval *timeout); 

系統調用,nfds是最大的文件描述符,我們感興趣的是在該位圖中設置的所有文件描述符中。我認爲這是爲了提高效率,以便實現不必掃描系統中的所有文件描述符。如果是這樣的話,那麼爲什麼這個系統調用不允許我們傳遞一個參數來指定感興趣的最小文件描述符呢?

+0

我不確定,但文件描述符往往是小數字,所以也許只是指定下限通常沒有多大幫助。 – 2012-03-25 23:15:18

+0

這似乎是最簡單的解釋。但可能有更多的技術原因。 – euphoria83 2012-03-25 23:33:06

回答

1

如您所說,文件描述符編號不是每個系統的每個進程。因此,他們每次都從零開始,因此沒有太多的用途來設定下限。

+0

是的,我昨天澄清了這個概念。 – euphoria83 2012-04-01 00:14:18

+0

你可以用'dup2'移動它們。所以下限是多餘的。 – 2015-08-25 19:34:55