For some reason, I wasn't able to get bsd_signal to be exposed by
signal.h, despite using _XOPEN_SOURCE=600 and _GNU_SOURCE/-std=gnu++98.
This hack is close enough. From the man page for bsd_signal(3):
On modern Linux systems, bsd_signal() and signal(2) are equivalent.
But on older systems, signal(2) provided unreliable signal semantics;
see signal(2) for details.
- include stubs for Solaris specific functionality
- include some missing standard headers
- guard Solaris specific constructs with preprocessor conditionals
- fix pointer-to-int-cast undefined behavior