Linux编程(11)_信号

1 信号初步认识

1.1 特点
  • 简单
  • 携带的信息量少
  • 使用在某个特定的场景中
1.2 信号的状态

信号优先级高, 进程先执行信号.

  • 产生 由内核产生
    • 键盘 – ctrl+c
    • 命令 – kill
    • 系统函数 – kill
    • 软条件 – 定时器
    • 硬件 – 段错误, 例除以0
  • 未决信号 – 等待被处理
  • 递达 – 已被处理
1.3 处理方式

忽略, 捕捉, 默认

1.4 信号的四要素
1.5 man文档查看信号

man 7 signal

1.6 阻塞信号集, 未决信号集
  • 在pcb中, 不能直接操作
  • 阻塞信号集 – 存放屏蔽的信号
  • 未决信号集 – 待被处理的信号集合

2 信号相关函数

2.1 kill – 发送信号给指定进程

原型 int kill(pid_t pid, int sig);

2.2 raise – 给自己发信号

原型int raise(int sig)

2.3 abort – 给自己发送异常终止信号

3 信号集

4 信号捕捉

4.1 siganl
  • typedef void (*sighandler_t)(int);

  • sighandler_t signal(int signum, sighandler_t handler);

    捕捉到信号, 则调用handler函数

4.2 sigaction

原型

int sigaction(int signum,
             const struct sigaction *act,
             struct sigaction *oldact
             );
struct sigaction{
    void (*sa_handler)(int); //用这个函数指针就够了
    void (*sa_sigaction)(int, siginfo_t*, void*)
    sigset_t sa_mask; //在信号处理中, 临时屏蔽指定信号, sa_handler运行完之后才运行
    int sa_flags; //如果用sa_handler则赋值为0, 
    //void (*sa_restorer)(void);
}

5 SIGCHLD信号

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值