Proper use of select() parameter nfds?

Поиск
Список
Период
Сортировка
Искать
От
Matthew Hagerty
Тема
Proper use of select() parameter nfds?
Дата
Msg-id
5.0.2.1.2.20010706010404.023309b0@pop.voyager.net
Список
Дерево обсуждения
Proper use of select() parameter nfds? Matthew Hagerty <mhagerty@voyager.net>
Re: Proper use of select() parameter nfds? Tom Lane <tgl@sss.pgh.pa.us>
Re: Proper use of select() parameter nfds? Alex Pilosov <alex@pilosoft.com>
Greetings,

I am going over the use of select() for a server I'm writing and I 
*thought* I understood the man page's description for the use of the first 
parameter, nfds.
From MAN:

The first nfds descriptors are checked in each set; i.e., the descriptors 
from 0 through nfds-1 in the descriptor sets are examined.


I take this to mean that each descriptor set contains n descriptors and I 
am interested in examining the first nfds descriptors referenced in my 
sets.  I also understood it to mean that nfds has absolutely nothing to do 
with the actual *value* of a descriptor, i.e. the value returned by 
fopen(), socket(), etc..  Is this correct thinking?  What got me 
second-guessing myself was a use of select() that seems to indicate that 
you have to make sure nfds is larger than the value of the largest 
descriptor you want checked.  Here is the select() from the questionable 
code (I can provide the whole function if necessary, it's not very big):

if (select(conn->sock + 1, &input_mask, &output_mask, &except_mask,    (struct timeval *) NULL) < 0)


Is this improper use?  conn->sock is set like this:

/* Open a socket */
if ((conn->sock = socket(family, SOCK_STREAM, 0)) < 0)


Any clarification on how nfds should be set would be greatly appreciated.

Thanks,
Matthew


В списке pgsql-hackers по дате отправления
От: ncm@zembu.com (Nathan Myers)
Дата:
Сообщение: Re: Re: Backup and Recovery
От: Zeugswetter Andreas SB
Дата:
Сообщение: AW: Re: Backup and Recovery
FAQ