The problem is that UnixSignal doesn't work at all if program sometimes calls Console.Beep() command. Just check this example:
static void Main(string args)
var signals = new
int index = UnixSignal.WaitAny(signals, 1000);
if (index == 1000)
Signum signal = signals[index].Signum;
Console.WriteLine("Signal received " + signal);
You could run that program in console, then press Ctrl + C combination and you will see nothing. Then just comment Console.Beep() line and run it again. After Ctrl + C you will see: "Signal received SIGINT".
Tested on Ubuntu 14.04.3 TLS. I checked mono 4.0.3 and mono 4.2.1 and didn't see any difference.