int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *errorfds, struct timeval *timeout);
の最初のパラメータは、ここで私はウィキから得るものです:Linuxの場合:最初のパラメータ<code>nfds</code>については
は、私は簡単な質問がありますか?これは整数 のいずれかにおける任意のファイルディスクリプタの最大値よりも1ですセット。つまり、ファイルディスクリプタを各セットの に追加している間に、 のすべての最大整数値を計算してから、この値を1ずつ増やしてから、これをnfdsとして渡す必要があります。私はプロセスに複数のソケットを持っている場合は、
select
の最初のパラメータを設定する方法を、
:
最大のソケット番号+1で設定する必要がありますか?
もしそうなら、select
は最大のソケット番号+ 1より小さいすべてのファイル記述子をリッスンしていますか?
たとえば、私は3つのソケット111,222,333を持っています。最初のパラメータを334に設定すると、0から333までのファイル記述子をすべて聴いていますか?
は古い投稿の重複のようです: http://unix.stackexchange.com/questions/7742/whats-the-purpose-of-the-first-arg-to-select-system-call – eyalm