问题
Is there any way to create a user defined signals in Linux? My signal (signal number) should not match any of the existing signal numbers.
In other words, i want to create my own unique signal, which will be registered and caught by my handler.
Is it possible? If yes, how?
Thanks in advance.
回答1:
You can't add or register your own SIGWHATEVER.
See sigset_t
, it is fixed size. See valid_signal()
beartraps.
回答2:
SIGRTMIN
through SIGRTMAX
(these are not normally constants but macros which expand to functions evaluated at runtime) are available for whatever use you like, as are SIGUSR1
and SIGUSR2
. The former have additional realtime queueing support; the latter don't. Simply choose one to use.
回答3:
You can compile your own kernel with special signals :)
回答4:
There are the USR1
and USR2
signals designed for user defined purposes.
回答5:
You can use USR1 and USR2 for this kind of thing.
If that's not enough, you can emulate signal like behaviour by having your application listen on a socket which external apps can send messages to.
来源:https://stackoverflow.com/questions/5741604/is-there-any-way-to-create-a-user-defined-signal-in-linux