1、函数原型理解

void (*signal(int sig,void(*func)(int)))(int);

指定使用sig指定的信号编号处理信号的方法。

signal函数的返回值是函数指针。

比如说,void * myfunc();  我们说myfunc函数的返回值类型是void*

同样, 函数指针的形式举例:

void (*  )(int)

*边上的空白处可以填写变量名或者函数名,

我们将signal函数带入空白处,就是如上的形式了。

简化一下:typedef void (*sighandler)(int);----->将 void (*) (int) 用sighandler代替;

void (*signal(int sig,void(*func)(int)))(int);------>void (*signal(int sig,sighandler handler)(int);

再简化:

void (*signal(int sig,sighandler handler)(int);----------------->sighandler signal(int sig,sighandler handler);

可以先想象signal()这个函会先执行,执行完毕后剩下的int ( * )()就是signal的返回值类型,很显然这个类型是个函数指针。

小结:困扰的地方在于,函数的返回值为函数指针,而函数指针的形式,当我们带入函数进去的时候,函数名是是在函数指针里面的,这个不同于普通的指针返回值。

handler指定程序可以处理信号的三种方式之一:

默认处理(SIG_DFL):          信号由该特定信号的默认动作处理

忽略信号(SIG_IGN):      忽略信号,即使没有意义,代码执行仍然继续。

函数处理程序:                 定义一个特定的函数来处理信号

2、函数参数说明:

第一个参数是要捕捉的信号(查看信号:kill -l,9号SIGKILL信号不能被捕捉); 
第二个参数表示我们要对信号进行的处理方式。

1)忽略信号//如:忽略Ctrl+c信号

int main()
{signal(2,SIG_IGN);//忽略信号while(1){printf("aaaaa");sleep(6);}return 0;
}

2) 默认动作

int main()
{signal(2,SIG_DFL);//默认处理信号while(1){printf("aaaaa");sleep(6);}return 0;
}

3)自定义处理函数//捕捉到这个信号后,按照handler处理函数进行操作

#include<signal.h>
void  handler(int signo)
{printf("signal:%d\n:",signo);
}
int main()
{signal(2,handler);while(1){printf("hello world\n");sleep(6);}return 0;
}

signal函数的简单用法相关推荐

  1. linux中signal函数的简单用法

    信号是软件中断,它提供了一种处理异步事件的方法,每个信号有个以SIG打头的名字,讲signal函数之前我们先了解下当前系统所支持的信号名称,在linux中敲下kill -l就能查看. [lingyun ...

  2. python3的格式化用法_浅析python3字符串格式化format()函数的简单用法

    format()函数 """ 测试 format()函数 """ def testformat(): # format()函数中有几个元素, ...

  3. matlab中ode45函数的用法_带你理解Excel中COUNTIF函数的简单用法

    每天5分钟,每天学一点. COUNTIF函数是Excel中最常用的统计函数之一,它的作用主要是用于根据特定条件对数据进行统计.假如,你想统计一下本周总共做了几次健身/瑜伽,或者统计上了几次培训课,那么 ...

  4. MATLAB中画折线图:plot函数的简单用法

    20年4月24日更新 关于MATLAB里柱状图的画法,以及如何在图例legend和轴标签xlabel里加入latex公式,请参考 https://blog.csdn.net/u014261408/ar ...

  5. map函数的简单用法。

    在这里感谢新浪博客的daylive的博文: Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作! 1. map ...

  6. C语言带空格的字符串输入——gets()函数、scanf()函数缺陷以及改进后的gets_s()函数、scanf_s()函数的简单用法(上)

    **在C语言中,带空格的字符串输入问题相对而言还是比较"坑"的,所以呢,小编就决定要专门谈一谈这个问题,希望对于初学者能够有所帮助. 该篇主要简述了C语言中gets()函数以及sc ...

  7. c 高级函数的简单用法

    c 中内置了很多高级的函数,我们先使用排序函数看一下 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <str ...

  8. Oracle中sign函数的简单用法

    sign函数语法: sign(n) sign函数说明: 取数字n的符号,大于0返回1,小于0返回-1,等于0返回0 示例: select sign( 100 ),sign(- 100 ),sign( ...

  9. oracle lag group,Oracle中的lag()和lead()函数的简单用法(统计增长率)

    这两个函数,是偏移量函数,其用途是:可以查出同一字段下一个值或上一个值,并作为新列存在表中. 准备数据 select t.row_id, t.product_code, t.product_price ...

最新文章

  1. 【OpenCV 4开发详解】直方图应用
  2. Trailblazer —— Rails 的扩展概念驱动开发框架
  3. 中文论文万能句型_SCI 论文写作万能句型汇总(很实用)
  4. GitHub上3天1W赞的程序员学习路线!入门进阶都非常实用
  5. HashSet 的contains方法
  6. 纸白银:交易简便成本低
  7. win10电脑突然开不了热点,怎么办
  8. 181004有道扇贝每日一句
  9. C#实现秒杀器之网站登录
  10. Android轮播换背景,Android实现背景图片轮播
  11. 《翻译与本地化CAT软件实用教程》目录
  12. JavaScript循环刷新页面
  13. 【Steam VR 2.0】自定义按键 action 发布后无效的解决办法
  14. python查询12306余票_【python】用GUI编写一个12306余票查询的系统,附源码
  15. 基于MPlayer的QT媒体播放器
  16. 明源售楼系统技术解析(四)右键菜单
  17. Python的线程如何理解
  18. 用计算机研究脑电波,可用于计算机硬盘识别及脑电波测量的量子传感器【中国科讯】...
  19. 用计算机投屏图片,手机投屏Windows7电脑图文教程
  20. 【Android 系统开发】 编译 Android文件系统 u-boot 内核 并烧写到 OK-6410A 开发板上

热门文章

  1. SpringBoot——日志文件
  2. 关于BeanUtils.populate()方法使用时的报错解决
  3. ioredis pipeline用法
  4. Java仿腾讯视频流媒体点播网站开发实战
  5. Java下载Excel文件
  6. 学习Android开发
  7. 福昕PDF阅读器护眼设置
  8. 【PHP框架 | Laravel8 系列3】 - 路由
  9. Linux:解压bz2文件
  10. Python之Email邮箱账号抓取