As far as I know, the semantics of select() are the same under both
UNIX and Windows. The fd_count argument itself (select's first
argument) is not changed; it can't be, because an int (not a pointer
to an int) is passed. select()'s other four arguments are changed
after the call, though. The second, third, and fourth arguments are
fd_set structures containing the list of FD's that should be checked
for readability, writability, and exceptional conditions; when select()
returns, those sets are replaced with sets containing a list of the
FD's that are actually ready to be read/written/excepted. The
'timeout' arg is replaced, I think, with the time remaining on the
timer (i.e. the original value of timeout minus the actual time that
passed in select()).
In any case, yes, the fd_set args are destroyed each time select() is
called, but that doesn't matter because the sets are recalculated
before each call anyway. Circle recalculates them instead of making a
copy because the contents of the set can change from call to call,
depending on who has connected or disconnected since the last call.
-j
Franco Gasperino writes:
> Just the other day I was taking a look at comm.c, and noticed
>that calls to select() seemed a bit odd. Now, i've used select()
>under windows, and have noticed that the integer that stores
>the fd_count is reset to 0 after each select call. I've always had
>to make a temporary fd_set object to hold this temp value, then
>replace it after a select call.
> Circle does not seem to do this. As a matter of fact, while I
>haven't step through it to see what it actually does under Linux,
>I don't even see a temp data item to hold a value like that.
>Could someone clue me in if that fd_count problem is specific
>to windows, or did I overlook something. All of my books
>describing the ip functions under unix also show the coping of
>the fd_set too.
>
>Franco Gasperino
>Cutting Edge Communications
>Programmer / System Administrator
>http://www.cet.com/
>509-444-INET
>awe@cet.com
>
>
> +------------------------------------------------------------+
> | Ensure that you have read the CircleMUD Mailing List FAQ: |
> | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
> +------------------------------------------------------------+
+------------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
| http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
+------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/08/00 PST