POSIX信号处理

信号就是告知某个进程发生了某个事件的通知,有时也称为软件中断.
信号可以:

  • 由一个进程发给另一个进程
  • 由内核发给某个进程
    (1)信号处理函数:只要有特定的信号发生它就被调用.
    信号处理函数由信号值这个单一的整数参数来调用,没有返回值.函数原型:
void handler(int signo);

(2)可以把某个信号的设定为SIG_IGN来忽略它SIGKILL和SIGSTOP不可以忽略
(3)把某个信号的设定为SIG_DFL来启动它的默认设置

由于sigaction函数调用复杂,UNP卷一中将其进行改进,通过signal函数去调用完善它。
signal函数原型:void (signal(int signo,void(func)(int)))(int);
typedef简化:typedef void Sigfunc(int);
变为:Sigfunc *signal(int signo,Sigfunc *func);

符合POSIX的系统的信号处理为以下几点:
  • 安装信号处理函数后它会一直安装
  • 信号处理函数运行期间,信号是阻塞的
  • unix信号是默认不排队的,一个信号在被阻塞期间产生了一次或多次,那该信号被解阻塞后通常指递交一次
  • 利用sigprocmask函数选择性地阻塞或解阻塞一组信号是可能的。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 对于 Linux来说,实际信号是软中断,许多重要的程序都需要处理信号。信号,为 Linux 提供了一种处理异步事件...
    故事狗阅读 85,989评论 2 63
  • ### main函数执行之前做了什么?(iOS) & dyld 是Apple 的动态链接器;在 xnu 内核为程...
    天使君阅读 3,954评论 0 1
  • 一、进程的创建和调度 相关概念: 最基础的计算机动作被称为指令(instruction)。 程序(program)...
    穹蓝奥义阅读 10,231评论 0 6
  • 楼上的装修从早晨六点持续到晚上九点,电钻的声音刺激着神经,外卖盒子散发出油腻的气味,我整日整日的呆在狭小的出租屋内...
    不茶阅读 2,312评论 0 3
  • 连日来的阴雨缠绵不断,搅得人心有些慌乱与急躁,经不起一点点的不顺心。房子周围是潮湿的沼泽地,这里有着明显的、却又不...
    桃夭精阅读 2,801评论 0 1