信号是用于一步事件的。当一个信号发生时,程序会按照已经设定好的程序来执行相应的操作。
进程对信号处理的方法一般有两种:
1、捕捉信号:当一个信号发送个进程时,该进程会调用此信号注册的信号处理函数,来完成相应的操作。对应于每个信号系统一般会有相应的默认处理函数(一般为终止进程)。所以可以设置信号为默认的处理函数。
2、忽略信号。当信号发送时,进程忽略信号。
注:有两个信号是无法捕捉和忽略的SIGKILL和SIGSTOP。它们是提供给管理员,可以在任何时刻终止某个进程而设定的。
对信号处理的要求:在用户编程时有时进程需要对某信号进行立即响应。对有些实时进程来说,当它执行时是不愿意被打断的,这是就需要把接收的信号挂起。
信号的使用:
信号最常见的一个应用就是发生错误时通知进程结束。对于许多错误,如bus错误,浮点错误,调用内存错误等都有相应的信号通知进程。
此外信号还有其他用途。如运行一个大型的科学运算程序,若是在一个无穷循环中用printf来显示运行状态,势必造成运行效率的下降。所以通过信号,人为的向进程发送消息,来查看运行状态,就大大的提高了运行效率。