一鸿建设设计网站建立一个网站的费用
在日常生活中我们也经常面临许多的信号,手机通知、过红绿灯。。。这些信号在没有发生之前我们就知道这种信号产生我们需要干什么,那Linux里信号产生后,又怎么知道要做什么呢? -- 那当然是由程序员自己去设置啊
由于我们的用户空间代码执行到任何地方都有可能收到信号,所以信号相对于进程的控制流程来说是异步。
那这也意味着,当信号到来时,有可能我们的程序在做一件比较重要的事,这时就可能会暂缓处理这个信号
信号的处理方式: 默认 、忽略 、自定义
signal:
在我们平时运行一个进程时,我们想让它停下来,可以使用 CTRL + c (2),CTRL + \(3) 来停止它,为什么这两个操作就可以停止呢,当然是因为产生了信号,而这两个信号正对应停止操作
signal函数可以自定义一个信号的处理方式,那如果我们把 2号和3号信号变成了我们自定义的处理方式,那是不是我们的进程就停不下来了呢。。
其实不是的,9号信号依然可以杀死我们的进程,那如果我们自定义9号信号,是不是一个进程真的就杀不死了呢,hhh当然不是的,我们能想得到,那别人也能够想到,9号信号就是默认的处理方式,不可被更改
abort函数也是终止进程的函数,但是它不会有任何的清理工作,给自己发送终止信号6
实际执行信号的处理动作称为信号递达;
信号从产生到递达中间的状态成为信号未决;
信号被阻塞后会处于信号未决的的状态,直到进程解除对此信号的阻塞,才能完成信号递达