Linux信号使用及自定义信号

linux自定义信号:https://www.cnblogs.com/bigben0123/p/3186661.html

linux信号、值及解释:https://blog.csdn.net/luotuo44/article/details/16799607

信号处理:https://wiki.jikexueyuan.com/project/cplusplus/signal-handling.html

没什么kill -l没有32 33 http://www.kbase101.com/question/30858.html

__SIGRTMIN 和 SIGRTMIN:

两个是不同的,SIGRTMIN在 __SIGRTMIN 基础上+2

执行 kill -l  会列出了下信号

1) SIGHUP     2) SIGINT     3) SIGQUIT     4) SIGILL     5) SIGTRAP
 6) SIGABRT     7) SIGBUS     8) SIGFPE     9) SIGKILL    10) SIGUSR1
11) SIGSEGV    12) SIGUSR2    13) SIGPIPE    14) SIGALRM    15) SIGTERM
16) SIGSTKFLT    17) SIGCHLD    18) SIGCONT    19) SIGSTOP    20) SIGTSTP
21) SIGTTIN    22) SIGTTOU    23) SIGURG    24) SIGXCPU    25) SIGXFSZ
26) SIGVTALRM    27) SIGPROF    28) SIGWINCH    29) SIGIO    30) SIGPWR
31) SIGSYS    34) SIGRTMIN    35) SIGRTMIN+1    36) SIGRTMIN+2    37) SIGRTMIN+3
38) SIGRTMIN+4    39) SIGRTMIN+5    40) SIGRTMIN+6    41) SIGRTMIN+7    42) SIGRTMIN+8
43) SIGRTMIN+9    44) SIGRTMIN+10    45) SIGRTMIN+11    46) SIGRTMIN+12    47) SIGRTMIN+13
48) SIGRTMIN+14    49) SIGRTMIN+15    50) SIGRTMAX-14    51) SIGRTMAX-13    52) SIGRTMAX-12
53) SIGRTMAX-11    54) SIGRTMAX-10    55) SIGRTMAX-9    56) SIGRTMAX-8    57) SIGRTMAX-7
58) SIGRTMAX-6    59) SIGRTMAX-5    60) SIGRTMAX-4    61) SIGRTMAX-3    62) SIGRTMAX-2
63) SIGRTMAX-1    64) SIGRTMAX

注意没有32 33

这是因为NPTL。由于它是GNU C库的一部分,几乎每个现代Linux发行版都不再使用前两个实时信号了。 NPTL是POSIX Threads的实现。 NPTL内部使用前两个实时信号。

信号手册页的这一部分非常有趣:

Linux内核支持32种不同的实时信号,
  编号为33到64.但是,glibc POSIX线程实现
  内部使用两个(对于NPTL)或三个(对于LinuxThreads)实时
  信号(参见pthreads(7)),并适当调整SIGRTMIN的值
  (到34或35)。因为可用的实时信号范围不同
  根据glibc线程实现(和这种变化
  可以在运行时根据可用的内核和glibc)发生,
  实际上,实时信号的范围因UNIX系统而异,
  程序绝不应该使用硬编码来引用实时信号
  数字,但应始终使用的是实时信号
  符号SIGRTMIN + n,并包括适当的(运行时)检查
  SIGRTMIN + n不超过SIGRTMAX。

检查了glibc的源代码;参见第22行。 __SIGRTMIN增加了+2,因此前两个实时信号被排除在实时信号范围之外。

相关推荐