关键词不能为空

当前您在: 主页 > 英语 >

signal函数的使用

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-11 01:09
tags:

-

2021年2月11日发(作者:signs)


signal


函数的使用





signal

系统函数调用提供了一种最简单的范例。


然而,


由于


C


原形声明的缘故使它看起来比


实际复杂。< /p>


signal


函数将一个给定的函数和一个特定的信号联系。


这里是


FreeBSD


中的定义

< p>
(


和一个


typedef


一起


):



引用:




typedef void (*sig_t) (int);




sig_t




signal(int sig, sig_t func);




< /p>


第一个参数是目标信号。


func


参数是 一个指针,


指向某个处理该信号的函数。


这个处理信号


函数带有一个


int


型参数,并应返回


void



signal


函数中的


func


参数也可以设定为下面的一


些值:




引用:




SIG_IGN:


如果


func


参数被设置为


SIG_IGN


,该信号将被 忽略。





SIG_DFL:


如果


func


参数被设置为


SIG_DFL


,该信号会按 照确定行为处理。




PS

< p>


sig


信号的可能类型:




#define SIGHUP











1








/* hangup */


SIGHUP


Unix


系统管理员很常用的一个信号。许多后台服务进 程在接受到该信号后将会


重新读取它们的配置文件。


然而,


该信号的实际功能是通知进程它的控制终端被断开。


缺省

< p>
行为是终止进程。






#define SIGINT











2








/* interrupt */


对于


Unix

使用者来说,


SIGINT


是另外一个常用的信号。许多< /p>


shell



CTRL-C


组合使得这


个信号被大家所熟知。该信号的正式名字是中断信号。缺省行为是 终止进程。






#define SIGQUIT










3








/* quit */


SIGQUIT


信号被用于接收


shell



CTRL-/


组合。另外,它还用于告知 进程退出。这是一个


常用信号,用来通知应用程序从容的(译注


:


即在结束前执行一些退出动作)关闭。缺省行


为是终止进程, 并且创建一个核心转储。






#define SIGILL











4








/* illegal instr. (not reset when caught) */

< br>如果正在执行的进程中包含非法指令,操作系统将向该进程发送


SIGILL


信号。如果你的程


序使用了线程,或者


po inter


functions


,那么可能的话可以尝试捕获 该信号来协助调试。



[color=Red]


注意:原文这句为:


“If


your


progr


am


makes


use


of


use


of


threads,


or


pointer


functions, try to catch this signal if possible for aid in debugging .”



中间的两个


use of use of




知是原书排版的瑕疵 还是我确实没有明白其意义;另外,偶经常听说


functions

< br>pointer


,对



poin ter


functions



goo gle


了一下,应该是


fortran


里面的东西,不管怎样,还真不知道,


确切含义还请知道的兄弟斧正。

< br>[/color]


)缺省行为是终止进程,并且创建一个核心转储。






#define SIGTRAP










5








/* trace trap (not reset when caught) */


SIGTRAP


这个信号是 由


POSIX


标准定义的,


用于调试目 的。


当被调试进程接收到该信号时,


就意味着它到达了某一个调 试断点。


一旦这个信号被交付,


被调试的进程就会停止,


并且它


的父进程将接到通知。缺省行为是终止进程,并且创建一个核心 转储。






#define SIGABRT










6








/* abort() */


SI GABRT


提供了一种在异常终止


(abort)


一个进程的同时创建一个核心转储的方法。然而如


果该信号被捕获,并且信号 处理句柄没有返回,那么进程不会终止。缺省行为是终止进程,


并且创建一个核心转储。






#define SIGFPE











8








/* floating point exception */


当进程发生一个浮点错误时,


SIGFPE


信号被发送给该进程。对于那些处理复杂数学运算的


程序,一般会建议你捕获该信号。缺省行为是终止进程,并且创建一个核心转储。





#define SIGKILL










9








/* kill (cannot be caught or ignored) */


SIGKILL


是这些信号中 最难对付的一个。正如你在它旁边的注释中看到的那样,这个信号


不能被捕获或忽略。< /p>


一旦该信号被交付给一个进程,那么这个进程就会终止。然而,会有一

些极少数情况


SIGKILL


不会终止进程。这些罕见的情 形在处理一个



非中断操作



(比如磁



I/O


)的 时候发生。虽然这样的情形极少发生,然而一旦发生的话,会造成进程死锁。唯


一结束进 程的办法就只有重新启动了。缺省行为是终止进程。






#define SIGBUS











10







/* bus error */


如同它的名字暗示的那样,


CPU


检测到数据总线上的错误时将产生


SIGBUS


信号。当程序


尝试去访问一个没有正确对齐的内存地址时就会产生该信号。


缺省行为是终止进程,


并且创


建一个核心转 储。






#define SIGSEGV










11







/* segmentation violation */


SIGSEGV


是另一个


C/C++


程序员很熟悉的信号。当程序没有权利访问一个受保护的内存地


址时,或者访问无效的虚 拟内存地址(脏指针,


dirty


pointers


,译注:由于没有和后备存储


器中内容进行同步而造成。


关于野指针,


可以参见


/wiki/Wild_poi nter



解释。


)时,会产生这个 信号。缺省行为是终止进程,并且创建一个核心转储。





-


-


-


-


-


-


-


-



本文更新与2021-02-11 01:09,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/632998.html

signal函数的使用的相关文章

  • 余华爱情经典语录,余华爱情句子

    余华的经典语录——余华《第七天》40、我不怕死,一点都不怕,只怕再也不能看见你——余华《第七天》4可是我再也没遇到一个像福贵这样令我难忘的人了,对自己的经历如此清楚,

    语文
  • 心情低落的图片压抑,心情低落的图片发朋友圈

    心情压抑的图片(心太累没人理解的说说带图片)1、有时候很想找个人倾诉一下,却又不知从何说起,最终是什么也不说,只想快点睡过去,告诉自己,明天就好了。有时候,突然会觉得

    语文
  • 经典古训100句图片大全,古训名言警句

    古代经典励志名言100句译:好的药物味苦但对治病有利;忠言劝诫的话听起来不顺耳却对人的行为有利。3良言一句三冬暖,恶语伤人六月寒。喷泉的高度不会超过它的源头;一个人的事

    语文
  • 关于青春奋斗的名人名言鲁迅,关于青年奋斗的名言鲁迅

    鲁迅名言名句大全励志1、世上本没有路,走的人多了自然便成了路。下面是我整理的鲁迅先生的名言名句大全,希望对你有所帮助!当生存时,还是将遭践踏,将遭删刈,直至于死亡而

    语文
  • 三国群英单机版手游礼包码,三国群英手机单机版攻略

    三国群英传7五神兽洞有什么用那是多一个武将技能。青龙飞升召唤出东方的守护兽,神兽之一的青龙。玄武怒流召唤出北方的守护兽,神兽之一的玄武。白虎傲啸召唤出西方的守护兽,

    语文
  • 不收费的情感挽回专家电话,情感挽回免费咨询

    免费的情感挽回机构(揭秘情感挽回机构骗局)1、牛牛(化名)向上海市公安局金山分局报案,称自己为了挽回与女友的感情,被一家名为“实花教育咨询”的情感咨询机构诈骗4万余元。

    语文