This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: signals and read blocking - EINTR


Hi,

Jim Easton, le Tue 01 Nov 2005 02:40:00 -0700, a écrit :
> Hi,
> 
> Christopher Faylor wrote:
> > On Mon, Oct 31, 2005 at 08:49:30PM -0700, Jim Easton wrote:
> > >I'm wondering what am I missing?  Is there a flag in sigaction
> > >or something else that I could be setting?
> > 
> > Yes.  SA_RESTART is the flag.
> 
> and then Samuel Thibault wrote:
> > No: he wants to be _interrupted_. SA_RESTART is used for _not_ being
> > interrupted, i.e. the system restarts the system call itself.
> 
> Thank you both for your help.  It's quite true that I do want to be
> interrupted and SA_RESTART is to prevent it.
> 
> However it never occurred to me on linux and cygwin the flag would
> be defaulted set.  Things started to work much better when I
> deliberately unset the flag.

Mmm, I had a look at posix, at it says "The state of these flags is
not specified for signal()." So that you indeed need to explicitely
unset the flag, else the behavior is implementation-dependant (BSD sets
SA_RESTART and clears SA_RESETHAND for instance).

Alternatively, siginterrupt() might be useful, but sigaction is
preferred.

Regards,
Samuel

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]