select.2 (2010 09)
s
select(2) select(2)
for (k=0; k < NWORDS; k++)
readmask.fds_bits[k] = 0;
for (i=0, k=0; i < NTTYS && k < NWORDS; k++)
for (j=0; j < NFDBITS && i < NTTYS; j++, i++) {
ttymask[i] = MASK(tty[i]);
readmask.fds_bits[k] |= ttymask[i];
}
timeout.tv_sec = 5;
timeout.tv_usec = 0;
for (k=0; k < NWORDS; k++)
readfds.fds_bits[k] = readmask.fds_bits[k];
/* select on NTTYS+3 file descriptors if stdin, stdout
* and stderr are also open
*/
if ((nfound = select (NTTYS+3, &readfds, 0, 0, &timeout)) == -1)
perror ("select failed");
else if (nfound == 0)
printf ("select timed out \n");
else for (i=0, k=0; i < NTTYS && k < NWORDS; k++)
for (j=0; j < NFDBITS && i < NTTYS; j++, i++)
if (ttymask[i] & readfds.fds_bits[k])
/* Read from tty[i]. The code for reading
* is not shown here.
*/
else printf ("tty[%d] is not ready for reading \n",i);
WARNINGS
The file descriptor masks are always modified on return, even if the call returns as the result of a
timeout.
DEPENDENCIES
select() supports the following devices and file types:
• pipes
• fifo special files (named pipes)
• all serial devices
• All ITEs (internal terminal emulators) and HP-HIL input devices
• lan (7) special files
• pty (7) special files
• sockets
AUTHOR
select() was developed by HP and the University of California, Berkeley.
SEE ALSO
fcntl(2), poll(2), read(2), sigprocmask(2), write(2), thread_safety(5),
<sys/time.h>.
HP-UX 11i Version 3: September 2010 − 5 − Hewlett-Packard Company 5