From owner-freebsd-hackers Tue Nov 16 19:20: 9 1999 Delivered-To: freebsd-hackers@freebsd.org Received: from f434.n5020.z2.fidonet.org (host5.mtelecom.ru [212.44.147.5]) by hub.freebsd.org (Postfix) with ESMTP id 3C27514A16 for ; Tue, 16 Nov 1999 19:19:37 -0800 (PST) (envelope-from seva@mtelecom.ru) Received: from mtelecom.ru (p1 [192.168.44.37]) by f434.n5020.z2.fidonet.org (8.8.8/8.8.8) with ESMTP id GAA20032 for ; Wed, 17 Nov 1999 06:21:27 +0300 (MSK) (envelope-from seva@mtelecom.ru) Message-ID: <383222DF.164E86DB@mtelecom.ru> Date: Wed, 17 Nov 1999 06:37:12 +0300 From: Seva "Semenov" X-Mailer: Mozilla 4.51 [en] (X11; U; FreeBSD 3.2-RELEASE i386) X-Accept-Language: en MIME-Version: 1.0 To: freebsd-hackers@FreeBSD.ORG Subject: fifo's select in 3.3 RELEASE Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG FreeBSD 3.3 and 3.2 RELEASE. fifo has nothing to read, why select(2) return > 0 without timeout? in freeBSD 2.2.X select(2) return 0 (timeout) as expected. # mkfifo fifo # cat readfifo.c #include #include #include #include #include #include #include #include int main() { int fd; fprintf(stderr,"opening fifo\n"); if((fd=open("fifo",O_RDONLY|O_NONBLOCK))<0) err(errno,"can't open fifo"); fprintf(stderr,"fifo opend\n"); for(;;){ fd_set fds; int r; struct timeval tv; size_t s; char b[64]; tv.tv_sec=5; tv.tv_usec=0; FD_ZERO(&fds); FD_SET(fd,&fds); r=select(FD_SETSIZE,&fds,NULL,NULL,&tv); if(r<0) err(errno,"select return %d ",r); if(r==0){ perror("timeout"); continue; } fprintf(stderr,"start reading\n"); s=read(fd,b,63); if(s<0) err(errno,"read fifo return %d",s); if(!s){ perror("read null bites"); continue; } puts(b); } } To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message