From owner-freebsd-hackers Tue Nov 23 15:17:23 1999 Delivered-To: freebsd-hackers@freebsd.org Received: from fw.wintelcom.net (ns1.wintelcom.net [209.1.153.20]) by hub.freebsd.org (Postfix) with ESMTP id 18E4B15458 for ; Tue, 23 Nov 1999 15:17:18 -0800 (PST) (envelope-from bright@wintelcom.net) Received: from localhost (bright@localhost) by fw.wintelcom.net (8.9.3/8.9.3) with ESMTP id PAA17666; Tue, 23 Nov 1999 15:42:52 -0800 (PST) Date: Tue, 23 Nov 1999 15:42:52 -0800 (PST) From: Alfred Perlstein To: Seva "Semenov" Cc: freebsd-hackers@FreeBSD.ORG Subject: Re: fcntl(0,F_SETFL,O_ASYNC) & signal(SIGIO,rkbd); don't work in 3.X !!!! In-Reply-To: <383B1755.F432A049@mtelecom.ru> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG On Wed, 24 Nov 1999, Seva Semenov wrote: > Why my little proggy can't get SIGIO in FreeBSD 3.3-RELEASE, > when i type my keyboard? > > In 2.2.6-RELEASE it works right. > > > #include > #include > #include > #include > #include > #include > #include > #include > #include > #include > > void > rkbd(int sig) > { > int i,j; > u_char b[1024],*c; > > syslog(LOG_DEBUG,"***** "); > > i=read(0,b,1024); > if(i<0) > syslog(LOG_DEBUG,"read failed due to %s",strerror(errno)); > > else > if(!i) > syslog(LOG_DEBUG,"read null bites"); > else{ > b[i]='\0'; > puts("\n******"); > fputs(b,stdout); > puts("******\n"); > fflush(stdout); > } > } > > int > main(int argc,char **argv) > { > if(fcntl(0,F_SETFL,O_ASYNC)==-1) > err(errno,NULL); > signal(SIGIO,rkbd); > for(;;){ > sleep(10); > } > } i'm not sure why the change happened, but here's a fix: --- sigio.old.c Tue Nov 23 19:18:01 1999 +++ sigio.c Tue Nov 23 19:19:21 1999 @@ -36,7 +36,14 @@ int main(int argc,char **argv) { + int arg; + + arg = getpid(); + + if(fcntl(0,F_SETFL,O_ASYNC)==-1) + err(errno,NULL); + if(fcntl(0,F_SETOWN,arg)==-1) err(errno,NULL); signal(SIGIO,rkbd); for(;;){ unless this is strictly a test program you should be using the constants "STDIN_FILENO" afaik. -Alfred To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message