日期:2014-05-16  浏览次数:20707 次

Linux 信号的阻塞

当运行这个程序的for循环是,我按了多个Ctrl+c,但是for循环结束后怎么就调用了一次fun_ctrl_c()?

------解决方案--------------------
运行的次数跟系统有关,有的系统对阻塞的信号进行排队,这样做的比较少,大多数系统对阻塞信号不排队,只保留一次,所以按了多次Ctrl+c后,信号只处理了一次;参见<unix环境高级编程>第十章,这本书是UNIX编程的圣经了,还是得多看看。
------解决方案--------------------
信号分为可靠信号与不可靠信号(32之前的是不可靠信号,剩余的是可靠信号),可靠信号又称为实时信号,非可靠信号又称为非实时信号,不可靠信号不排队,只在对应进程中注册一次,所以。。。。。。
------解决方案--------------------
引用:
引用:运行的次数跟系统有关,有的系统对阻塞的信号进行排队,这样做的比较少,大多数系统对阻塞信号不排队,只保留一次,所以按了多次Ctrl+c后,信号只处理了一次;参见<unix环境高级编程>第十章,这本书是UNIX编程的圣经了,还是得多看看。
学Linux必须学习Unix吗,尤其是我以后想接触内核编程。请给点建议


linux的一个目标就是兼容unix. 学好应用层的linux/unix开发有助于理解linux内核和开发驱动等方面。