Linux的kill函数和SIGUSR1信号。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux的kill函数和SIGUSR1信号。相关的知识,希望对你有一定的参考价值。

用kill函数向一个进程发送SIGUSR1信号,那么这个进程在什么都不做的情况下会怎么样?

对于这个信号而言,没有信号响应函数的话,进程应该会异常终止,对于系统已有的信号一般都是有默认处理的,具体的我有点记不得了,搜下其实就知道了.我在网上找了下各信号默认处理方式,你看看吧,对你有没有用
信号名称 信号说明 默认处理
SIGABRT 由程序调用 abort时产生该信号。 程序异常结束。 进程终止并且产生core文件
SIGALRM timer到期, 有alarm或者setitimer 进程终止
SIGBUS 总线错误,地址没对齐等。取决于具体硬件。 结束终止并产生core文件
SIGCHLD 进程停止或者终止时,父进程会收到该信号。 忽略该信号
SIGCONT 让停止的进程继续执行 继续执行或者忽略
SIGFPE 算术运算异常,除0等。 进程终止并且产生core文件。
SIGHUP 终端关闭时产生这个信号 进程终止
SIGILL 代码中有非法指令 进程终止并产生core文件
SIGINT 终端输入了中断字符ctrl+c 进程终止
SIGIO 异步I/O,跟SIGPOLL一样。 进程终止
SIGIOT 执行I/O时产生硬件错误 进程终止并且产生core文件
SIGKILL 这个信号用户不能去捕捉它。 进程终止
SIGPIPE 往管道写时,读者已经不在了,或者往一个已断开数据流socket写数据。 进程终止
SIGPOLL 异步I/O,跟SIGIO一样。 进程终止
SIGPROF 有setitimer设置的timer到期引发 。 进程终止
SIGPWR Ups电源切换时 进程终止
SIGQUIT Ctrl+\,不同于SIGINT,这个是会产生core dump文件的。 进程终止并且产生core文件
SIGSEGV 内存非法访问,默认打印出segment fault 进程终止并且产生core文件
SIGSTOP 某个进程停止执行,该信号不能被用户捕捉。 进程暂停执行
SIGSYS 调用操作系统不认识的系统调用。 进程终止并且产生core文件
SIGTERM 有kill函数调用产生。 进程终止
SIGTRAP 有调试器使用,gdb 进程终止并且产生core文件
SIGTSTP Ctrl+z,挂起进程。 进程暂停
SIGTTIN 后台程序要从终端读取成数据时。 进程暂停
SIGTTOU 后台终端要把数据写到终端时。 进程暂停
SIGURG 一些紧急的事件,比如从网络收到带外数据。 忽略
SIGUSR1 用户自定义信号 进程终止
SIGUSR2 用户自定义信号 进程终止
SIGVTALRM 有setitimer产生。 进程终止
参考技术A 那就什么也没有发生啊。追问

你明显瞎说的

追答

我没有瞎说啊。就像你跟某人说话, 他不理你。。。

追问

其实我测试过,进程会退出,我想知道的是为什么退出,但我不能说我知道,就怕你瞎说,果然瞎说了。答案在2楼,好好看看吧

追答

学习了! 刚弄明白你的问题。

追问

共同学习!

linux信号与trap命令

使用 trap -l 或者 kill -l 来查看信号的编号及关联的名称

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

trap 命令语法:

trap 执行的shell命令 signal                #signal为接收到的信号,可以是信号的编号,也可以是信号名

trap ‘命令 ;命令‘ signal                        #接收到信号后,执行多条命令。

trap ‘命令 ;命令‘ signal signal  signal           #同时接收多个信号后

例如:trap ‘:‘ INT EXIT TSTP TERM HUP         #<==屏蔽这些信号,通常部署在跳板机上,用来保护跳板机的限制脚本。

重要信号及说明

1) HUP       挂起,通常因终端掉线或用户退出引发
2) INT       中断,通常按 Ctrl+c 组合键引发  
3) QUIT      退出,通常按 Ctrl+组合键引发  
6) ABRT      中止,通常因某些执行错误引发
14)ALRM     报警,通常用来处理超时
15)TERM     终止,通常在关机的时候发送
20)TSTP     停止进程运行,通常按 Ctrl+z 组合键引发 
 

以上是关于Linux的kill函数和SIGUSR1信号。的主要内容,如果未能解决你的问题,请参考以下文章

Linux kill 命令 以及USR1 信号解释

Linux的SIGUSR1和SIGUSR2信号

用户定义的信号 sigusr1 和 sigusr2

Apache进程同步

linux系统上信号发送和信号接收讲解

Linux 发送信号