Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 11 Oct 1999 11:05:26 -0400 (EDT)
From:      Zhihui Zhang <zzhang@cs.binghamton.edu>
To:        Ruslan Ermilov <ru@ucb.crimea.ua>
Cc:        freebsd-hackers@FreeBSD.org
Subject:   Re: How to prevent a system call from restart?
Message-ID:  <Pine.GSO.3.96.991011110409.1849B-100000@sol.cs.binghamton.edu>
In-Reply-To: <19991011115506.A34243@relay.ucb.crimea.ua>

next in thread | previous in thread | raw e-mail | index | archive | help

On Mon, 11 Oct 1999, Ruslan Ermilov wrote:

> On Sun, Oct 10, 1999 at 03:16:43PM -0400, Zhihui Zhang wrote:
> > 
> > I modify the day time client program from the Stevens' book and run it on
> > both a Sun workstation and a FreeBSD machine.  In the program, I use
> > signal() and alarm() to set a 5 seconds timeout.  The program works as
> > expected on Sun (after I comment out the daytime line in the file
> > /etc/inetd.conf) but not on the FreeBSD machine. 
> > 
> > Later I find out that the reason maybe the recvfrom() restarts
> > *automatically* in FreeBSD.  Why the default behaviour is different from
> > SunOS? If I am correct about the reason, can anyone tell me how to prevent
> > the recvfrom() from restart after receiving the SIGALRM signal? 
> > 
> > By the way, I also try the socket timeout option.  It works immediately.
> > 
> > Any help is appreciated.
> > 
> Refer to the siginterrupt(3) manpage, it has all info you are looking for.

Thanks! I add the following line after signal(), then it works:

        (void) signal(SIGALRM, sig_alarm);
        siginterrupt(SIGALRM, 1);           <-- only add this line.

-Zhihui




To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.GSO.3.96.991011110409.1849B-100000>