signal() 
        功能:信号管理功能 
        语法:#include  
             void (*signal(sig,disp))(int) 
             int sig; 
             void (*disp)(int);

void (*sigset(sig,disp))(int) 
             int sig; 
             void (*disp)(int);

int sighold(sig) 
             int sig;

int sigrelse(sig) 
             int sig;

int sigignore(sig) 
             int sig;

int sigpause(sig) 
             int sig; 
        说明:这些系统调用提供了应用程序对指定信号的简单的信号处理. 
             signal()和sigset()用于修改信号定位.参数sig指定信号(除了 
             SIGKILL和SIGSTOP,这两种信号由系统处理,用户程序不能捕捉到)

             disp指定新的信号定位,即新的信号处理函数指针.可以为 
             SIG_IGN,SIG_DFL或信号句柄地址. 
             若使用signal(),disp是信号句柄地址,sig不能为SIGILL,SIGTRAP

或SIGPWR,收到该信号时,系统首先将重置sig的信号句柄为SIG_DFL, 
             然后执行信号句柄. 
             若使用sigset(),disp是信号句柄地址,该信号时,系统首先将该 
             信号加入调用进程的信号掩码中,然后执行信号句柄.当信号句柄

运行结束 
             后,系统将恢复调用进程的信号掩码为信号收到前的状态.另外, 
             使用sigset()时,disp为SIG_HOLD,则该信号将会加入调用进程的

信号掩码中而信号的定位不变. 
             sighold()将信号加入调用进程的信号掩码中. 
             sigrelse()将信号从调用进程的信号掩码中删除. 
             sigignore()将信号的定位设置为SIG_IGN. 
             sigpause()将信号从调用进程的信号掩码中删除,同时挂起调用 
             进程直到收到信号. 
             若信号SIGCHLD的信号定位为SIG_IGN,则调用进程的子进程在终 
             止时不会变成僵死进程.调用进程也不用等待子进程返回并做相 
             应处理. 

        返回值:调用成功则signal()返回最近调用signal()设置的disp的值. 
             否则返回SIG_ERR. 
        例子一:设置用户自己的信号中断处理函数,以SIGINT信号为例: 
             int flag=0; 
             void myself() 
             { 
                 flag=1; 
                 printf("get signal SIGINT\n"); 
                 /*若要重新设置SIGINT信号中断处理函数为本函数则执行以

*下步骤*/ 
                 void (*a)(); 
                 a=myself; 
                 signal(SIGINT,a); 
                 flag=2; 
             } 
             main() 
             { 
                 while (1) { 
                     sleep(2000);  /*等待中断信号*/ 
                     if (flag==1) { 
                         printf("skip system call sleep\n"); 
                         exit(0); 
                     } 
                     if (flag==2) { 
                         printf("skip system call sleep\n"); 
                         printf("waiting for next signal\n"); 
                     } 
                 } 
             }

sighold,sigset,sigrelse,sigpause,sigignore相关推荐

  1. 深入redis内部--初始化服务器

    初始化服务器代码如下: void initServer() {int j;signal(SIGHUP, SIG_IGN); signal(SIGPIPE, SIG_IGN);setupSignalHa ...

  2. sigset 与 signal的区别?

    阅读<深刻理解UNIX系统内核>的时候,了解到了关于信号的使用.回想起以前本身用过 signal()来处理信号,可是当时实践的时候有个错误的理解:信号处理只捕获一次信号,后面的信号都没捕获 ...

  3. Unix 多进程编程

    一.多进程程序的特点 由于UNIX系统是分时多用户系统, CPU按时间片分配给各个用户使用, 而在 实质上应该说CPU按时间片分配给各个进程使用, 每个进程都有自己的运行环境 以使得在CPU做进程切换 ...

  4. Nuttx signal

    Signal 基本数据结构和信号掩码说明 信号相关主要数据结构 struct sigactq {FAR struct sigactq *flink; /* Forward link */struct ...

  5. linux设置子线程的信号屏蔽器,[转载]linux信号屏蔽字

    1. 概念: 信号屏蔽字就是进程中被阻塞的信号集, 这些信号不能发送给该进程, 它们在该进程中被"屏蔽"了. 后面我们会提到, 实际上它们是被阻塞了. 2. 信号屏蔽函数: #in ...

  6. linux任务处理函数,Linux信号掩码和信号处理函数

    1.信号掩码--被阻塞的信号集 每个进程都有一个用来描述哪些信号传送来将被阻塞的信号集,如果某种信号在某个进程的阻塞信号集中,则传送到该进程的此种信号将会被阻塞.当前被进程阻塞的信号集也叫信号掩码,类 ...

  7. socket connect阻塞和非阻塞处理

    建立socket后默认connect()函数为阻塞连接状态,在大多数实现中,connect的超时时间在75s至几分钟之间,想要缩短超时时间,可解决问题的两种方法:方法一.将socket句柄设置为非阻塞 ...

  8. ltp-ddt的makefile结构

    顶层makefile COMMON_TARGETS        := pan utils COMMON_TARGETS    += tools testcases/ddt COMMON_TARGET ...

  9. linux c语言内核函数手册,Linux C函数实例速查手册

    函数学习目录: 第1章 初级I/O函数 1.1 close函数:关闭已经打开的文件 1.2 creat函数:创建一个文件 1.3 dup函数:复制文件描述符 1.4 dup2函数:复制文件描述符到指定 ...

最新文章

  1. 和方舟rust一样的手游_方舟生存进化手游2.0版本的泰克科技有多强?恐龙大军都顶不住...
  2. JavaScript 要点(十四)HTML DOM 元素(节点)
  3. LCIS code force 10D
  4. 微信小程序 提示Toast
  5. CSDN产品公告:APP新增大厂在线刷题功能、博主排名规则更新、MD编辑器优化
  6. Linux打开rtf文档,在linux下设置开机自动启动程序的方法_精品.rtf
  7. 使用递归法求阶乘(C语言)
  8. 如何管理好IDC机房?(一)
  9. 浏览器同源与跨域问题总结
  10. Linux:shell变量功能和Bash shell的操作环境
  11. 4k hidpi 黑苹果_黑苹果如何通过开启HIDPI来增强显示效果?
  12. 康佳电视应用助手服务器连接超时,康佳盒子出现网络连接问题的原因,解决方式...
  13. 挪威议会邮件系统遭遇攻击,电子邮件安全该如何保障?
  14. 高琪300集——入门
  15. 物联网常见通信模块介绍
  16. 一元线性回归方程的建立
  17. idea2021.3CPU占用100%解决办法
  18. 【程序设计】暴力枚举
  19. Dennis MacAlistair Ritchie
  20. U-Boot启动参数详解(U-Boot-2014.07版本)

热门文章

  1. 好用的电视盒子软件推荐:无广告看电视我选这两款
  2. 手机APP开发之MIT Appinventor详细实战教程(一),利用通过蓝牙控制单片机,以及实现单片机与android设备之间的串口通信
  3. 搭建开发环境RN React Native
  4. 卷积神经网络在句子分类上的应用[翻译]
  5. 并发编程系列之并发编程的认识
  6. Spring Data JPA使用JPQL与原生SQL进行查询
  7. 计算机二级证件领取额,计算机二级证书怎么领
  8. Java实现-五子棋
  9. numpy.random.rand用法
  10. 写论文时,参考文献怎么引用?