UNIX信号初接触

网友投稿 864 2022-09-23

UNIX信号初接触

UNIX信号初接触

unix下信号的概念可以和Java中的异常来进行对比理解。 SIGINT信号由CTRL+C产生,CTRL+C只对前台进程有效。当一个命令在执行时加&放在后台运行时,无效。 信号相对于进程的控制流程来说是异步的。 信号的产生: 用户在终端按下某些键时,终端驱动程序会发送信号给前台进程,例如: CTRL+C产生SIGINT信号 CTRL+\产生SIGFPE信号 CTRL+Z产生SIGTSTP信号 硬件产生信号,例如: 当前进程执行了除以0的指令,CPU运算单元产生异常,内核将这个异常解释为SIGFPE信号发送给进程 当前进程访问了非法内存地址,MMU会产生异常,内核将这个异常解释为SIGSEGV信号发送给进程 一个进程可以调用kill(2)函数发送信号给另一个进程 可以用kill(1)命令发送信号给某个进程,kill(1)命令也是调用kill(2)实现的,如果不明确指定信号则发送SIGTERM信号,该信号的 默认处理动作是终止进程。 当内核检测到某种软件条件发生时也可以通过信号通知进程,例如闹钟超时产生SIGALRM信号,向终端已关闭的管道写数据时产生 SIGPIPE信号。

用户程序可以调用sigaction(2)函数告诉内核如何处理某种信号,可选的处理动作有以下三种:

1.忽略此信号;

2.执行该信号的默认处理动作

3.提供一个信号处理函数,要求内核在处理该信号时切换到用户态执行这个处理函数,这种方式称为捕捉(CATCH)一个信号。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:expect简单安装
下一篇:奥迪和刘德华涉“抄袭门”事件:数字营销时代下,4A“没戏唱”了?
相关文章

 发表评论

暂时没有评论,来抢沙发吧~