[Mono-list] Question on unix signal handling

mickeyf mickey at thesweetoasis.com
Thu Jan 17 16:02:50 UTC 2013


I'm new to signals. Looking over the Mono docs, and various articles on the
web, it's clear that this has evolved as Mono matured. I just want to make
sure I understand how it actually works today, and what I should expect. 

I see   in this documentation:
<http://oddacon.hopto.org:8181/1.1/handlers/monodoc.ashx?link=T%3AMono.Unix.UnixSignal>   

"In a multi-threaded program, a thread is selected at random among the
threads that can handle the signal, and that thread is hijacked to run the
signal"

I understand that that is referring to _unmanaged_ *nix code, not Mono.

Further along in the same doc, we have 

"[Mono.Unix.UnixSignal] uses an internal unmanaged signal handler."

So, I'm thinking of using code based on height8's (only 2 year old) blog
post :  here <http://www.height8.com/?unixsignal_mono>  

So my questions are:

If I have a Mono application with an arbitrary number of threads, can I use
this approach to make sure that any signal is properly caught and handled by
a single method? That is, will any signals that are raised be seen only by
my signal handler, and ignored by everything else?

If my Mono app is using unmanaged libraries, I presumably have to ensure
that the library code also either ignores any signals or handles them in a
sensible way. (Using signal(2), or SIGACTION(2) ?)

What I'm ultimately aiming at is that I can 

a) make sure that I can shut down my application cleanly and completely by
sending it a signal (ctrl-C from the keyboard for example), and that 

b) it does not get tripped up by signals that may originate from other
processes other than a system shut down, an intentional "kill", etc.

thanks



--
View this message in context: http://mono.1490590.n4.nabble.com/Question-on-unix-signal-handling-tp4658167.html
Sent from the Mono - General mailing list archive at Nabble.com.


More information about the Mono-list mailing list