Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!zaphod.mps.ohio-state.edu!swrinde!cs.utexas.edu!ut-emx!lad-shrike!dcj From: dcj@AUSTIN.LOCKHEED.COM (David Jacobson rimux) Newsgroups: comp.unix.programmer Subject: Understanding select... Message-ID: <533@shrike.AUSTIN.LOCKHEED.COM> Date: 12 Apr 91 21:08:40 GMT Organization: Lockheed Austin Div. Lines: 65 HI! ;-) I'm rather a novice at Unix I/O. I've been RTFMing about the select command and believe I'm misunderstanding it. I would like to use the select command to sit on a serial device object descriptor (fd) and come off the select when any data has come in. Q1: Is this possible? I'd then proceed to read (and write) to (and from) the object descriptor. Unfortunately, my program sits on my select and never comes off. Q2: Do you see the error in my concept of select or in my code below? Any help would be greatly appreciated. I'll post the answer for those that are interested. A simplified example of my attempt follows: === Start Source =================================================== ... all the necessary includes main(argc, argv) int argc; char *argv[]; { static int maxfdp1; fd_set readmask; boolean nfound = FALSE; static struct timeval timeout; /** open serial port file descriptor **/ if ((fd = open(STUDeviceName, O_RDWR|O_NOCTTY)) == -1) { fprintf(stderr,"Could not open %s.\n",STUDeviceName); exit(1); } FD_ZERO(&readmask); FD_SET(fd, &readmask); maxfdp1 = fd++; /** Watch for IO on port **/ nfound = select(maxfdp1, &readmask, (fd_set *) 0, (fd_set *) 0, NULL); if (nfound < 0) { fprintf(stderr,"Select error.\n"); exit(1); } ... start reading/writing from/to fd } /* end main() */ === End Source ===================================================== ____________________________________ _______________________________________ . | David C. Jacobson =========___/ \___ Lockheed | (512) 386-4267 =======`/ . \' Austin Division | INTERNET: ===/' `\ (LAD) | dcj@austin.lockheed.com ____________________________________|_______________________________________ `Nothing of what I say has anything to do with anybody in any way.'