c语言标准库详解(十三):信号signal.h

本文详细介绍了C语言头文件中的信号处理,包括signal函数和raise函数的使用。signal函数用于设定信号处理方式,如默认行为、忽略或自定义处理函数。raise函数则用于向程序发送指定信号。通过示例展示了如何在程序中应用这些功能,并解释了如何中断无限循环程序。
摘要由CSDN通过智能技术生成

c语言标准库详解(十三):信号<signal.h>

概述

头文件<signal.h>提供了一些处理程序运行期间引发的各种异常条件的功能,比如来源于外部的中断信号或程序执行错误引起的中断信号。

signal函数

void (*signal(int sig, void (*handler)(int)))(int)

signal 决定了如何处理后续的信号。如果 handler 的值是 SIG_DFL,则采用由实现定义的默认行为;如果 handler 的值是 SIG_IGN,则忽略该信号;否则,调用 handler 指向的函数(以信号作为参数)。有效的信号包括:

信号名 功能
SIGABRT 异常终止,例如由abort引起的终止
SIGFPE 算术运算出错,如除数为0或溢出
SIGILL 非法函数映像,如非法指令
SIGINT 用于交互式目的的信号,如中断
SIGSEGV 非法存储器访问,如访问不存在的内存单元
SIGTERM 发送给程序的终止请求

对于特定的信号,signal 将返回 handler 的前一个值;如果出现错误,则返回值 SIG_ERR。
当随后碰到信号 sig 时,该信号将恢复为默认行为,随后调用信号处理程序,就好像由(*handler)(sig)调用的一样。信号处理程序返回后,程序将从信号发生的位置重新开始执行。
信号的初始状态由具体的实现定义。
那么这个函数该怎么读:
中间部分 :
signal( int sig, void (*func)(int))
signal函数有2个参数,第一个是int,第二个是无返回值,带一个int参数的函数指针
外围:
void (*signal(xxx)) (int)
signal函数返回的是一个函数指针,无返回值,有一个int参数
简化:
typedef void Sigfunc(int)
Sigfunc就代表的就是一个 返回值是一个无返回值,有一个int参数的函数。
最后就成了这样
Sigfunc *signal(int, Sigfunc*)
这部分参考了https://blog.csdn.net/ly0303521/article/details/49563417

raise函数

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值