I'm finding that if I run height8's example code exactly as is, as an independent application, it works as expected.
If I use that identical code to watch a UnixSignal and to shut down my application, there is no indication that SIGTERM, SIGINT or SIGQUIT are being caught. The big difference is probably that I do have multiple threads running (in the managed code only). I have made sure that there is no reference to signal handling in the unmanaged libraries or anywhere else in the C# code. Ctrl-C (with no special handling at all) does seem to halt console output, which implies that this is being caught at some low level. However, after a Ctrl-C, "ps aux | grep myapp" shows that I still have myapp.exe and /usr/bin/cli myapp.exe running, and one of the devices I'm talking to shows that it's still connected. In any case, UnixSignal.WaitAny doesn't seem to be behaving as I hoped. I'm guessing that some other thread must be getting the signals. The fact that Ctrl-C is not ignored supports this. I can shut the 2 listed processes down with a script that looks for that name and sends a kill, but that by itself does not clean up everything as it ought. Interestingly, a Console.CancelKeyPress handler does catch Ctrl-C and allows me to call a shut down routine that shuts down all my running processes, releases resources, etc. So on the one hand I do have a way to cleanly shut down this app, and my immediate problem is solved. On the other hand, I'm still missing something about how to effectively use UnixSignal in mono. -- View this message in context: http://mono.1490590.n4.nabble.com/Question-on-unix-signal-handling-tp4658167p4658215.html Sent from the Mono - General mailing list archive at Nabble.com. _______________________________________________ Mono-list maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-list
