Re: restarting signals

Página superior
Eliminar este mensaje
Responder a este mensaje
Autor: Philip Hazel
Fecha:  
A: Neal Becker
Cc: exim-users
Asunto: Re: restarting signals
On 16 Oct 1996, Neal Becker wrote:

> On hpux9 I see that getc() can return EINTR, so I guess you'd just
> wrap getc().


Yes, I've discovered that that is the case on Solaris 2 as well. Having
had some thought, I now realize what the logical problem is. Exim wants
restarting of the system call to be *dependent on the signal*, and I have
achieved it on other OS by explicitly setting up SIGUSR1 as restarting,
and leaving other signals (e.g. time out) to interrupt system calls. In
some cases there are explicit tests for EINTR after the calls.

So any wrapping is going to need a flag that is set in the SIGUSR1
handler function, and only restart the system call if the flag is set,
but not otherwise.

I'm beginning to wish I hadn't invented the SIGUSR1 facility. :-)

--
Philip Hazel                   University Computing Service,
ph10@???             New Museums Site, Cambridge CB2 3QG,
P.Hazel@???          England.  Phone: +44 1223 334714