On Sun, Jan 11, 2009 at 08:53:49PM +0000, Andy Koppe wrote: >>>I've added a thread doing 'for (;;) pause();', but unfortunately that >>>doesn't seem to do the trick. Do I need to go into Cygwin internals >>>and wait directly on the Win32 event(s) used for signals? >>sigwait() will probably work better than pause. > >That indeed works, thank you very much! I didn't know that function, >very handy. With that and threads, signal handlers with all their >vagaries aren't really needed anymore, are they?
I have it on my todo list to see why pause doesn't work. I'd like to do some signal revamping someday but I don't want to destabilize 1.7.0 to do that. >And speaking of threads, does it make a difference whether one uses >Pthreads or Win32 threads? I mean apart from portability and the small >overhead Pthreads presumably incur. You really have to use pthreads. Using non-posix methods is always asking for trouble in Cygwin. >MinTTY's got three such little helper threads hanging about now, doing >waitpid() on the child process, read() on the child pty, and the >abovementioned sigwait(). Would there be any point in trying to >consolidate them into a single sigwait() process, using SIGCHLD and >asynchronous reads? Hmm. I guess you could just do a sigwait on SIGCHLD and consolidate the signal handling with that. I don't think it makes sense to set up async I/O just to do reads on the pty. That would eliminate one thread at least. cgf -- 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/