linux信号列表的详细解决方案
我们运行以下命令来查看Linux支持的信号列表:
百万美元
1)进程2)3)4)sigill SIGQUIT信号情报
5)6)7)sigtrap sigabrt SIGBUS 8)迷惑
9)发送SIGKILL 10)11)12)SIGUSR2 SIGSEGV信号SIGUSR1
13)14)15)sigpipe SIGALRM信号SIGTERM信号SIGCHLD 17)
18)19)20)SIGTSTP SIGCONT SIGSTOP 21)sigttin
22)23)24)sigttou sigurg sigxcpu 25)SIGXFSZ
26)sigvtalrm 27)28)29)sigprof sigwinch SIGIO
30)电源故障信号31)34)35)sigsys sigrtmin sigrtmin + 1
36)sigrtmin + 2 37)sigrtmin + 3 38)39)sigrtmin sigrtmin + 4 + 5
40)sigrtmin + 6 41)sigrtmin + 7 42)43)sigrtmin sigrtmin + 8 + 9
44)sigrtmin + 10 45)sigrtmin + 11 46)47)sigrtmin sigrtmin + 12 + 13
48)sigrtmin + 14 + 15 50)49)sigrtmin sigrtmax-14 51)sigrtmax-13
52)sigrtmax-12 53)54)55)sigrtmax-9 sigrtmax-10 sigrtmax-11
56)sigrtmax-8 57)58)59)sigrtmax-5 sigrtmax-6 sigrtmax-7
60)sigrtmax-4 61)62)63)sigrtmax-1 sigrtmax-2 sigrtmax-3
64)sigrtmax
在列表中,编号为1到31的信号是由传统UNIX支持的信号。它是一种不可靠的信号(非实时),信号32~63后被扩展,称为可靠信号(实时信号),不可靠信号与可靠信号的区别在于前者不支持队列,这可能导致信号丢失,后者不会。
下面我们讨论一个数小于sigrtmin信号。
1)进程
此信号在用户终端连接(正常或异常)结束时发出,通常在终端控制过程结束时,通知同一会话中的所有作业,该作业不再与控制终端相关联。
当Linux登录,系统分配给终端(会话)的用户登录,所有的程序运行在这个终端,包括前台进程组和后台进程组,一般属于会话。当用户退出Linux登录,前面的过程组和过程与终端输出到终端将收到SIGHUP信号。该信号的默认操作是终止进程,因此进程组和最终在后台输出过程将被中止。但你可以捕捉到这一信号,可以捕获SIGHUP信号,wget和忽视它,使wget可以继续下载即使它退出Linux登录。
此外,对于与终端无关的守护进程,这个信号用于通知它重新读取配置文件。
2)技术
一个程序终止(中断)信号,发出用户按键的字符时(通常按Ctrl-C)通知前台进程组终止进程。
3)SIGQUIT
这是类似的技术,但受退出字符(通常是Ctrl - )。的过程中会生成核心文件时SIGQUIT退出,这是类似于在这个意义上,一个程序错误信号。
4)sigill
非法指令被执行,通常是因为可执行文件本身是错误的,或者试图执行数据段。当发生堆栈溢出时,生成此信号是可能的。
5)sigtrap
它是由断点指令或其他陷阱指令生成的。它由调试器使用。
6)sigabrt
调用中止函数生成的信号。
7)SIGBUS
非法地址,包括内存地址对齐(校准)错误。例如,访问一个四字长度的整数,但其地址不是4的倍数。它和SIGSEGV之间的区别是,后者是由合法的存储地址非法访问触发(如访问不属于自己的存储空间或只读存储空间)。
8)迷惑
它是在发生致命的算术错误时发出的。它不仅包括浮点运算错误,还包括所有其他算术错误,如溢出和除数0。
9)发送SIGKILL
它是用来立即结束程序的。此信号不能被阻止、处理和忽略。如果管理员发现进程不能停止,您可以尝试发送此信号。
10)SIGUSR1
供用户使用
11)SIGSEGV
尝试访问未分配给自己的内存,或者尝试将数据写入没有写权限的内存地址。
12)SIGUSR2
供用户使用
13)sigpipe
管道破裂。这个信号通常是在进程间通信中产生的,例如,使用FIFO(管道)通信的两个进程。如果管道不开或意外终止,它将会被写入管道,和过程将得到sigpipe信号。此外,与两进程的套接字通信,写进程终止时,插座是写。
14)SIGALRM信号
时钟定时信号用于计算实际时间或时钟时间。报警功能使用信号。
15)SIGTERM
程序结束(终止)信号,不像SIGKILL,是信号可以被处理,它通常是用来让程序正常退出,和shell命令杀死产生该信号的默认。如果过程不能停止,我们将尝试SIGKILL。
17)SIGCHLD
在子进程的结尾,父进程接收这个信号。
如果父进程不处理信号,则没有等待(等待)子进程。虽然子进程终止,但它将占用内核进程表中的表项。子进程称为僵尸进程。在这种情况下,我们应该避免(父进程或忽略sigchild信号,或捕捉它,或者等待派生的子进程,或父进程结束,子进程终止时自动被init进程)。
18)SIGCONT
让停止(停止)进程继续执行。这个信号不能被阻止。当程序从停止状态更改为继续执行时,可以使用处理程序使其完成特定的工作。例如,重新提示。
19)SIGSTOP
停止停止进程的执行。注意它和终止和中断之间的区别:进程还没有完成,但是执行是暂停的。此信号不能被阻止、处理或忽略。
20)SIGTSTP
停止进程运行,但信号可以被处理和忽略。当用户钥匙到SUSP字符(通常使用),发出信号
21)sigttin
当一个后台作业读取用户终端的数据,在工作的过程sigttin信号接收。默认情况下,这些进程将停止执行。
22)sigttou
Similar to SIGTTIN, but received when writing terminal (or modifying terminal mode).
23)sigurg
存在一个紧急数据,当到达套接字时产生数据或带外数据。
24)sigxcpu
超过CPU时间资源限制。这种限制可以读 / / setrlimit改变getrlimit。
25)SIGXFSZ
当进程试图扩展文件以使其超出文件大小的资源限制时。
26)sigvtalrm
一个虚拟的时钟信号,类似于SIGALRM信号,但计算由进程的CPU时间。
27)sigprof
它类似于SIGALRM信号/ sigvtalrm,但包括用于过程和系统调用时的CPU时间。
28)sigwinch
窗口大小在大小更改时更改。
29)SIGIO
文件描述符准备启动输入输出操作。
30)电源故障信号
断电
31)sigsys
非法系统调用。
在上述信号,信号,程序不捕获,块,或忽略:SIGKILL,SIGSTOP
不可恢复到默认动作的信号是:sigill,sigtrap
sigabrt,SIGBUS,迷惑sigill,sigiot,SIGQUIT,SIGSEGV,sigtrap,sigxcpu,SIGXFSZ是导致流产的信号处理。
导致进程退出默认的信号是:SIGALRM信号,进程,信号情报,SIGKILL,sigpipe,sigpoll,sigprof,sigsys,SIGTERM,SIGUSR1,SIGUSR2,sigvtalrm
导致过程停止默认的信号是:SIGSTOP,SIGTSTP,sigttin,sigttou
默认的过程中忽略了信号SIGCHLD,电源故障信号,sigurg,sigwinch
此外,SIGIO退出在SVR4和忽视4.3bsd;SIGCONT继续当进程挂起,否则是不能被忽视。
以下是对其他互联网用户的补充:
进程的终止过程的终端线悬挂
SIGINT终止过程中断过程
SIGQUIT建立核心文件终止过程中产生的核心文件
sigill设立非法指令的核心文件
sigtrap建立核心文件跟踪自陷
SIGBUS建立核心文件总线错误
SIGSEGV建立在核心文件段非法错误
迷惑中建立核心文件浮点异常
sigiot建立核心文件来执行我 / O自陷
SIGKILL终止进程杀死进程
sigpipe终止进程将数据写入管道没有阅读过程
sigalarm进程终止定时器
SIGTERM终止过程软件终止信号
SIGSTOP停止过程的非终端停止信号
SIGTSTP停止的停止信号处理终端
SIGCONT忽略信号继续停止的过程
sigurg忽略信号我/ O急救信号
SIGIO信号描述符可以忽略我/ O
SIGCHLD忽略信号当孩子父母停止或退出通知
sigttou停止进程后台进程写终端
sigttin停止过程阅读终端后台进程
sigxgpu终止进程的CPU时间限制超时
SIGXFSZ终止过程的文件长度太长
sigwinch忽略信号窗口的大小变化
sigprof终止过程的统计分布图与定时器的到来
用户定义信号SIGUSR1终止过程1
SIGUSR2终止处理用户定义的信号2
sigvtalrm终止过程虚拟定时器时间
1)进程的信号在用户终端的连接端发送(正常或异常),通常在终端控制。
在流程的最后,同一个会话中的每个作业在与控制终端一起时都会被通知。
不再相关。
2)SIGINT程序终止(中断)信号和发送用户密钥的字符时(通常按Ctrl-C)
3)SIGQUIT和SIGINT相似,但受退出字符(通常是Ctrl -)。
当SIGQUIT退出核心文件,它类似于在这个意义上,一个程序错误信。
数。
4)sigill执行非法指令,通常是因为可执行文件本身有错误,或试图执行它。
数据段。当堆栈溢出时,生成此信号是可能的。
5)sigtrap的断点指令或其他指令产生的陷阱。它由调试器使用。
6)的sigabrt程序产生错误时,发现错误并调用中断。
6)sigiot的PDP-11的物联网指令产生,在其他机器sigabrt相同。
7)SIGBUS非法地址,包括内存地址对齐(校准)误差。访问一个四字的长度
整数,但它的地址不是4的倍数。
8)迷惑时发出致命的算术错误发生。它不仅包括浮点错误,而且还包括溢出。
计算出0和其他所有算术错误的数目。
9)发送SIGKILL用来立即结束该程序的运行。此信号不能被阻止、处理和忽略。
10)SIGUSR1留给使用用户
11)SIGSEGV试图访问内存分配不到自己,或试着写数据到内存地址,没有写的权限。
12)SIGUSR2留给使用用户
13)sigpipe断管
14)SIGALRM时钟信号用于计算实际时间或时钟时间。警报功能使用这个
信号。
15)sigterm程序结束(终止)信号,不像SIGKILL,是信号被遮挡,
处理.通常用于要求程序正常退出。shell命令杀死的默认值产生此
一个信号。
17)在SIGCHLD子进程结束时,父进程接收到这个信号。
18)SIGCONT让停止(停止)过程的继续。这个信号不能堵住。可以使用
当程序从停止状态更改为继续执行时,使程序完成的特定处理程序。
工作。例如,显示一个提示
19)的SIGSTOP停止执行(停止)过程。请注意它与终止和中断之间的区别:
这个过程仍然没有完成,只有停顿。此信号不能被阻止、处理或忽略。
20)SIGTSTP停止程序运行,但可以对信号进行处理和忽视。当用户在SUSP字符类型
信号(通常使用)发出这个信号
21)sigttin当背景的工作是从用户终端读取数据,在工作的全过程,将收到的sigttin
信号。默认情况下,这些进程将停止执行。
22)sigttou类似sigttin,但收到的时候写的终端(或修改终端模式)。
23)sigurg时产生的急救数据或带外数据到达插座。
24)sigxcpu超过CPU时间资源约束。这种限制可以通过getrlimit / /读setrlimit
改变
25)SIGXFSZ超过文件大小资源约束。
26)sigvtalrm虚拟时钟信号。类似于SIGALRM信号,但计算进程所占用的CPU时间。
27)sigprof类似SIGALRM信号/ sigvtalrm,但包括的过程和系统调用所使用的CPU时间
时间。
28)的sigwinch窗口时改变窗口的大小改变。
29)SIGIO文件描述符准备开始输入/输出操作。
30)电源故障信号断电
有两个信号可以停止过程:SIGTERM和SIGKILL.SIGTERM更友好。这个过程可以捕捉到这一信号,根据您的需要关闭程序之前关闭程序,你可以打开记录文件并完成你正在做的工作。在某些情况下,如果工作过程中不被打断,那么过程可以忽略sigterm信号。
对于SIGKILL信号,这个过程中不可忽视的。这是一个我不管你做什么,立刻停止的信号。如果你发送SIGKILL信号的过程中,Linux停止进程。