中易网

C语言中的signal函数的作用是什么啊

答案:4  悬赏:80  
解决时间 2021-01-24 12:57
C语言中的signal函数的作用是什么啊
最佳答案
signal()是一种系统调用,用于通知运行时系统,当某种特定的“软件中断”发生时调用特定的程序。它的真正的名字应该是“Call_that_routine_when_this_interrupt_Comes_in(当该中断发生时调用那个程序)”,调用signal()函数,并通过参数传递告诉它终端类型以及用于处理中断的程序。
ANSIC 标准中,signal()函数的声明如下:
void (*signal (int sig ,void (*func)(int))) (int) ;
signal是一个函数,他返回一个函数指针,后者所指向的函数接受一个int参数并返回void 。
全部回答
楼上讲的很清楚,简单来说就是对特定的signal安装call_back函数
当signal到来时,程序运行某函数,函数由你自己指定
对于 信号处理函数 位于 <signal.h> 中.
void ( *signal( int sig, void (* handler)( int ))) ( int );
这个函数的声明很是吓人, 一看就难弄懂. 下面是解释用法.
一步一步解释:
int (*p)();
这是一个函数指针, p所指向的函数是一个不带任何参数, 并且返回值为int的一个函数.
int (*fun())();
这个式子与上面式子的区别在于用fun()代替了p,而fun()是一个函数,所以说就可以看成是fun()这个函数执行之后,它的返回值是一个函数指针,这个函数指针(其实就是上面的p)所指向的函数是一个不带任何参数,并且返回值为int的一个函数.
所以说对于
void (*signal(int signo, void (*handler)(int)))(int);
就可以看成是signal()函数(它自己是带两个参数,一个为整型,一个为函数指针的函数), 而这个signal()函数的返回值也为一个函数指针,这个函数指针指向一个带一个整型参数,并且返回值为void的一个函数.
而你在写信号处理函数时对于信号处理的函数也是
void sig_fun(int signo);
这种类型,恰好与上面signal()函数所返回的函数指针所指向的函数是一样的.
注意, void ( *signal() )( int );
signal是一个函数, 它返回一个函数指针, 后者所指向的函数接受一个整型参数 且 没有返回值, 仔细看, 是不是 siganal( int signo, void (*handler)(int) ) 的第2个参数了, 对了, 其实他所返回的就是 signal的第2个 信号处理函数, 指向 信号处理函数, 就可以执行 函数了( signal 内部时, signal把信号做为参数 传递给 handler 信号处理函数, 接着 signal 函数返回指针, 并且又指向 信号处理函数, 就开始执行它)
看样子和shell 脚本中的trap 命令差不多。
就是在程序收到制定的信号时候,调用指定的函数。
你需要了解的是信号是系统内部使用的一种机制,
比如你的程序正在前台运行,你又突然按了下ctrl+c 强制退出,那么程序正在运行 的时候可能就被干掉了。而 trap 或者siganal 函数就可以让你在某种不正常退出的情况下,再调用你指定的函数,可以做些清理工作啊什么的。
当然,信号是有很多种的,什么情况下有什么信号,你可以看下Linux的说明文档吗。man trap好像就可以看到
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
为了培养学生的理财能力某校八1班创办了一个
饥荒海滩遇到一艘船 然后出现在巨人国 怎么回
搬家头一天碰到楼上邻居死人好不好
protel dxp 工程怎么重命名
我的女朋友不想工作了
为什么我用IPhone6玩OPUS灵魂之桥会闪退
墙面裂缝处理技巧 墙面裂缝常见问题精选
gia裸钻
壮烈牺牲是什么意思
长沙地区垫鼻子做的怎么样?
2015年准备去泰国和马来西亚旅游自己办签证如
倒走是否影响大脑的记忆力?和对大脑有损害?
贵阳有快餐配送公司吗
手臂上长鸡皮肤怎么办?身上鸡皮肤怎么办
呼和浩特2015高中29中在呼市排第几
推荐资讯
有一块等返边三角形菜地,其中一边为5米。如
形容跑得快的句子
如何检测是幽门螺杆菌
中国每年出国留学生是多么人
默认情况下 自己电脑的管理员账号密码都是多
女小便尿不尽怎么回事的啊?大家告诉我下吧,
台湾昨天晚上地震了吗
金禧莱3d背景墙地址有知道的么?有点事想过去
求指教墙贴可以撕下来吗
国内行业竞争中,将来是外企,国企,民企三分
中星6b怎么调
形容持续很多天的成语
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?