首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    源码剖析signal和sigaction的区别

    这两个函数都是Linux下注册信号处理函数有关,但是它们的区别一般我们都是从书上、网上、man手册得知,要想对它们的区别了然于胸,源码剖析才是彻底的方法。...先来看这两个函数的区别和实验: 一、实验 1、signal比sigaction简单,但signal注册的信号在sa_handler被调用之前把会把信号的sa_handler指针恢复,而sigaction...,因为是用sigaction注册的,所以也是意料之中。...3、sigaction控制粒度更细,可以设置sigaction里面的sa_mask、sa_flags,比signal支持更多功能,可参考man,这里实验就免了。...二、信号安装 既然signal和sigaction最终都是调了系统调用rt_sigaction,那就得剖析一下rt_sigaction源码是怎么实现的了: 上面代码中,rt_sigaction主要是调用

    2.1K11

    linux系统编程之信号(五):实时信号与sigqueue函数

    act;     act.sa_sigaction = handler; //sa_sigaction与sa_handler只能取其一     //sa_sigaction多用于实时信号,可以保存信息...SIGINT, val); // 只可以发信号给某个进程,而不能是进程组     return 0; } 测试如下: 先运行recv程序: simba@ubuntu:~/Documents/code/linux_programming.../sigqueue_recv  再ps出recv进程的pid,然后运行send程序: simba@ubuntu:~/Documents/code/linux_programming/APUE/signal...;     sleep(3);     kill(pid, SIGUSR1);     return 0; } 先是运行recv程序: simba@ubuntu:~/Documents/code/linux_programming.../sigrtime_recv2 接着ps出recv进程的pid,运行send程序: simba@ubuntu:~/Documents/code/linux_programming/APUE/signal

    2K00
    领券