What is the best way in C on Linux for setting up a program that can handle multiple POSIX-signals with the same function?
For example in my code I have a handler fu
Is this the correct way to set up this type of handling?
Not quite - it's not safe to use printf() inside a signal handler, but you can still use write()
to stdout
or stderr
.
"signum" parameter of "sigaction" system call is an integer value, which does not work as a flag.
As far as I know, there's no way to assign one handler function for several signals in one call.
I can't see how you can straightforwardly set a single handler for all signals. However, you can get fairly close by using sigfillset() to generate a set containing all valid signal numbers, and then iterate over possible signal numbers using sigismember() to determine whether that number is in the set, and set a handler if so. OK, I can't see a method of determining what the maximum possible signal number is, so you might have to guess a suitable maximum value.