This is really just to satisfy my curiosity after this question. Although I'm now using an alternative solution, the original problem appears to come down to the fact that TIOCMGET is not implemented, and I'd like to know a bit about why that is.
Sadly, I haven't found much useful information just by googling, and I'm finding the tty_ioctl man page (the first result) pretty impenetrable.
So, what exactly is TIOCMGET, where is it implemented, and where might mono be looking for it and failing to find it?