今天复习信号,被函数指针和signal函数的原型绕住了,看了几篇博客,这里记录一下。
以下内容摘自signal() 函数详解,想要理解signal的原型,要先理解signal函数的返回值是一个函数指针这一概念。
void ( signal( int sig, void ( handler)( int )))( int );
int (*p)();
这是一个函数指针, p所指向的函数是一个不带任何参数, 并且返回值为int的一个函数。
int (*fun())();
这个式子与上面式子的区别在于用fun()代替了p,而fun()是一个函数,fun()这个函数执行完后的返回值是什么?没错,就是一个函数指针,并且该函数指针的类型就是int ( * )()。
这里不理解的话,你可以先想象fun()这个函会先执行,执行完毕后剩下的int ( * )()就是fun的返回值类型,很显然这个类型是个函数指针。

void (*signal(int signo, void (*handler)(int)))(int)
理解了上面的概念,这个就简单了,signal有两个参数,signo和void (handler)(int),第二个参数是个函数指针,这个函数指针指向了返回值为空、参数为int类型的一个函数。signal执行完后的返回值是个函数指针——void ()(int),这个函数指针也指向了返回值为空、参数为int类型的一个函数。实际上signal在实现时,返回的函数指针就是作为它传入参数的那个函数指针。

signal函数原型解读相关推荐

  1. c语言命令行参数怎么输入_C语言程序设计——这个函数原型你看懂了吗

    虽然过去了好多年,但我仍然清楚地记得自己第一次看到signal函数原型时的惊讶. 学习UNIX环境C编程的朋友都知道,信号是绕不过去的一道坎,而信号处理的第一重要函数就是signal(). 什么都不说 ...

  2. 信号的用法,signal函数、sigaction函数及信号集(sigemptyset,sigaddset)操作函数

    信号是与一定的进程相联系的.也就是说,一个进程可以决定在进程中对哪些信号进行什 么样的处理.例如,一个进程可以忽略某些信号而只处理其他一些信号:另外,一个进程还可以选择如何处理信号.总之,这些总与特定 ...

  3. linux中signal函数返回值,signal函数、sigaction函数及信号集操作函数

    信号是与一定的进程相联系的.也就是说一个进程可以决定在进程中对哪些信号进行什 么样的处理.例如一个进程可以忽略某些信号而只处理其他一些信号另外一个进程还可以选择如何处理信号.总之这些总与特定的进程相联 ...

  4. C专家编程—分析signal函数的原型声明{void (*signal(int sig,void (*func)(int)))(int)}(2)

    在ANSI标准中,signal()的声明如下:      void (*signal(int sig,void (*func)(int)))(int) signal是一个函数,它返回一个函数指针,后者 ...

  5. linux signal函数用法,linux信号机制之sigaction构造体浅析,signal 函数,信号捕捉.

    来自:http://hi.baidu.com/phenix_yw/blog/item/6eb4ca391d1479f23a87ce19.html 信号安装函数sigaction(int signum, ...

  6. 让你费解的函数原型:Linux下的signa函数

    signal函数用于向系统注册处理某一信号的函数,说白了,就是告诉系统:当某个信号发生了,执行这个函数.当signal被调用时,它返回调用前处理同意信号的函数的指针. 在signal.h头文件中,它的 ...

  7. linux编程下signal()函数

    首先说明函数指针的定义形式:      <存储类型> 数据类型 (* 函数指针名) (参数表):     其中存储类型一般不写,用默认形式.可以选auto型.static型和extern型 ...

  8. C语言关于signal()函数

    函数原型 void(* signal(int sig,void(* func)(int)))(int); 指定使用sig指定的信号编号处理信号的方法. 参数func指定程序可以处理信号的三种方式之一: ...

  9. 如何理解signal函数声明

    Signal函数用起来其实很简单,但是回头看看他的声明,相信会有很多人表示费解.自己也在这个问题中纠结了好几年了,今天终于弄明白,很是兴奋,一起分享一下. 先看函数原型:void (*signal(i ...

最新文章

  1. 关于在phpStudy环境下,windows cmd中 php不是内部命令问题
  2. squid+iptables实现透明代理
  3. 模型web迁移延时太长,机器学习神器Cortex 能一键解决吗?
  4. STM8S105系列单片机管脚复用配置(选项字节的配置)
  5. hdu 4302 STL multiset
  6. 1 睡眠唤醒_一劳永逸解决WIN10所有睡眠问题
  7. 天津理工大学c语言上机题库,天津理工大学C语言上机报告题目加答案.doc
  8. Flink 原理与实现:理解 Flink 中的计算资源
  9. linux c 串口可读可写,串口编程可写入不能读取 怎么解决
  10. 作为程序员的我春节还没抢到票却抢到这玩意儿,也是值了!
  11. Android中关于Volley的使用(二)加载Json数据
  12. 语言自制教具_学习笔记:蒙特梭利教师必备硬核技能“蒙氏理论+教具制作”...
  13. Config文件的使用:通过程序修改Config文件
  14. 流程平台:示例流程 - 主机申请审批流程
  15. php 验证是否是xml,php判断str字符串是否是xml格式数据
  16. 跳出坑爹的 Runtime Library 坑
  17. 坐标正反算例题_坐标正算公式例题
  18. Retina 显示屏
  19. xp计算机u盘重装系统,u启动一键u盘安装原版XP系统教程_u启动
  20. HUAWEI 机试题:黑板上的数涂颜色

热门文章

  1. Ext 4 概述(一)
  2. Android开发的经典入门教材和学习…
  3. 回溯法,子集选择合集
  4. 如是言,一个关于格言的故事
  5. CSS学习笔记 | CSS背景
  6. 计算机应用基础(专)【9】
  7. 【程序源代码】微信小程序餐饮点餐商城
  8. es的基本操作(创建索引,添加数据,删除数据,判断索引是否存在)
  9. GPS天线类型和特点
  10. QML Map中测距——QtLocation轻量级地图应用学习