User-defined signals mean that these signals do not have a specific meaning, unlike SIGSEGV , SIGCONT , SIGSTOP , etc. The kernel will never send SIGUSR1 or SIGUSR2 to the process, so the signal value can be set to you according to the needs of your application. All these uppercase SIG constants are actually macros that will expand to an integer indicating the signal number in a particular implementation. Although user-defined signals do not need to be defined, signal numbers are already fixed in a particular implementation and can be safely reassigned since they will not be sent by anything other than the user.
Traditionally, there are two user signals: SIGUSR1 and SIGUSR2 . However, in recent implementations there is something called "POSIX real-time signals" that offer some more custom signals.
source share