On Thu, 8 Jan 2004, rmkml wrote: > Hi, > > I've got a problem with signal handling and threads. > I've reproduced the problem in a simple code. > Description of program: > install a signal handler SIGINT. > create a thread that do nothing except waiting. > main thread use poll to wait forever [ poll(,,-1) ]. > user has too crtl-C to interrupt poll > after 5 ctrl-C, loop is over and main-thread signals sub-thread to > stops. > > In fact, it appears not to work correctly: after one ctrl-C, user has to > press ctrl-C twice before poll returns with errno=EINTR !! > If the thread creation is removed from code, the expected behavior is > seen : the program works fine. > > If I replace the poll by sigsuspend() the program works fine too. > > Is there something wrong with poll function ?
No, it's your program. Why do you think the signal will only be delivered to the main thread and not the other (run) thread? If you want a particular thread to receive a signal, then you had better set up signal masks for all threads appropriately (or use sigwait()). _______________________________________________ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "[EMAIL PROTECTED]"