打印

关于"void (*signal(int signo,void(*func)(int)))(int)"的剖析

[复制链接]
215|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
车水马龙|  楼主 | 2018-10-4 10:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<signal.h>

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

1、使用typedef拆解typedef void(*sighandler_t)(int);sighandler_t signal(int signum,sighandler_t handler);

2、使用函数指针理解int (*p)();p指向的是一个不带任何参数,并且返回值为int的函数;int (*fun())();这个式子与上式区别在于用fun()代替p,即fun()返回值是一个函数指针,这个函数指针(可以看作p),指向一个不带任何参数,并且返回值为int的函数;因此,对于void (*signal(int signo,void(*func)(int)))(int);可以看成是signal()函数,此函数带两个参数:一个为整型,一个为函数指针。而这个signal()函数的返回值也为一个函数指针,这个函数指针指向一个带一个整型参数,并且返回值为void的函数。

这个函数过于复杂,本身没有任何意义,通常都是使用typedef之后的简单信号处理函数。

3、实例分析1、实例源代码





2、执行程序





3、查看进程号





4、给进程发送信号





5、进程接收到信号

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

474

主题

476

帖子

0

粉丝