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>
