Does the POSIX standard or another C standard provide a way to recover a meaningful message from a signal number, in the same way that strerror()
makes it possible to recover a message from errno
? The Gnu C library has strsignal()
, but if possible, I would like something portable to BSD and other Unix variants.
views:
115answers:
2
+2
A:
The externally defined array sys_siglist
contains the signal descriptions for each signal number, and is standard issue on BSD.
#include <signal.h>
extern const char *const sys_siglist[];
caf
2009-11-12 02:20:13
+1 Not standard per se, but useful and more commonly found.
pilcrow
2009-11-12 02:25:10
+8
A:
Yes, interestingly, there is a standard way to get a string message from a signal in POSIX. It is, quite coincidentally, strsignal()
. From POSIX.1-2008:
The strsignal() function shall map the signal number in signum to an implementation-defined string and shall return a pointer to it. It shall use the same set of messages as the psignal() function.
An environment that does not provide you this function is not POSIX-compliant. Although relatively new (Issue 7 came out in 2008), I have a man page for strsignal()
on Mac OS X, so that's a good sign.
Jed Smith
2009-11-12 02:20:35
Thanks: http://tinyurl.com/d4z9evThe GNU man page, which says "This function is not part of any standard", obviously needs updating.
Norman Ramsey
2009-11-12 18:21:17