From owner-freebsd-bugs Thu Apr 20 09:45:42 1995 Return-Path: bugs-owner Received: (from majordom@localhost) by freefall.cdrom.com (8.6.10/8.6.6) id JAA02086 for bugs-outgoing; Thu, 20 Apr 1995 09:45:42 -0700 Received: from sequent.kiae.su (sequent.kiae.su [144.206.136.6]) by freefall.cdrom.com (8.6.10/8.6.6) with SMTP id JAA02080 for ; Thu, 20 Apr 1995 09:45:32 -0700 Received: by sequent.kiae.su id AA27938 (5.65.kiae-2 ); Thu, 20 Apr 1995 20:36:05 +0400 Received: by sequent.KIAE.su (UUMAIL/2.0); Thu, 20 Apr 95 20:36:05 +0300 Received: (from ache@localhost) by astral.msk.su (8.6.8/8.6.6) id UAA02538; Thu, 20 Apr 1995 20:33:54 +0400 To: Rainer Wittmann UMS , Garrett Wollman Cc: bugs@FreeBSD.org References: <9504201250.AA26059@namu01.gwdg.de> <9504201518.AA05095@halloran-eldar.lcs.mit.edu> In-Reply-To: <9504201518.AA05095@halloran-eldar.lcs.mit.edu>; from Garrett Wollman at Thu, 20 Apr 1995 11:18:32 -0400 Message-Id: Organization: Olahm Ha-Yetzirah Date: Thu, 20 Apr 1995 20:33:53 +0400 X-Mailer: Mail/@ [v2.32 FreeBSD] From: "Andrey A. Chernov, Black Mage" X-Class: Fast Subject: Re: signal handling bug Lines: 50 Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Content-Length: 1348 Sender: bugs-owner@FreeBSD.org Precedence: bulk In message <9504201518.AA05095@halloran-eldar.lcs.mit.edu> Garrett Wollman writes: ><> Any unix system, I know, except FreeBSD 2.0, behaves as follows, >> [description deleted] >Then you've never before used a 4BSD system. This is very >long-standard BSD behavior (goes back to 1982 or earlier). >> void SIGINT_handler(void) >void SIGINT_handler(int) >> { >> signal(SIGINT, (void (*)(int))SIGINT_handler); >Obviously you're used to using System V. Delete this line. >> fprintf(stdout, "\nSIGINT received\n"); >> } >> char chr; >> void main(void) >> { >> signal(SIGINT, (void (*)(int))SIGINT_handler); > struct sigaction sa; > sa.sa_handler = SIGINT_handler; > sigemptyset(&sa.sa_mask); > sa.sa_flags = 0; > sigaction(SIGINT, &sa, (struct sigaction *)0); >> errno = 0; >> read(0, &chr, 1); >> if( errno == EINTR ) fprintf(stdout, "errno = EINTR\n"); >> } You even don't need such complex procedure, just use single line siginterrupt(SIGINT, 1); -- Andrey A. Chernov : And I rest so composedly, /Now, in my bed, ache@astral.msk.su : That any beholder /Might fancy me dead - FidoNet: 2:5020/230.3 : Might start at beholding me, /Thinking me dead. RELCOM Team,FreeBSD Team : E.A.Poe From "For Annie" 1849