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: select() not interrupted by signals


Am 11.01.2013 16:38, schrieb Christopher Faylor:
On Fri, Jan 11, 2013 at 09:41:37AM +0100, Thomas Wolff wrote:
I had previously reported "select() hanging after terminal killed"
(http://cygwin.com/ml/cygwin/2011-05/msg00418.html).
It turns out that select() does not get interrupted by a SIGWINCH signal
either (with likely the same cause).
This raises problems with interactive programs that want to react to
window size changes (like text editors).

See attached updated test case; run the program, while select() is
waiting (before 5 second timeout each), change window size and see no
interrupt.
"No interrupt"?  I see a "HUP" but select() keeps going.  That was the
way I designed it but apparently that differs from the way Linux works.
select() is not restartable like read() or write().

That behavior should be fixed in the next snapshot.  If you are seeing
something different than this then that is not fixed.
After Corinna wrote:
You could test using the binary...
Yes, fixed with latest snapshot, thanks a lot. At least as far as I am concerned, i.e.
Not sure what exactly you mean with "select is not restartable" -
actually, that made me test again more deeply, and it seems you interrupt select() now on every signal;
as I understood it should only get interrupted on a signal related to a file descriptor for which the bit in the exceptfds vector is set...
I'll recheck that on Unix next week.
------
Thomas


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


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