信号处理

本是古典 何须时尚 2022-07-16 02:53 267阅读 0赞

信号的相关处理

signal函数

  • 用来设置进程在接收到信号时的动作.在Shell下输入man signal可获取函数原型如下:
    这里写图片描述

      signal会根据参数signum指定的信号编号来设置该信号的处理函数,*当指定的信号到达时就会跳转到参数handler指定的函数执行.

    如果参数handler不是函数指针,则必须是常数SIG_IGN(忽略该信号)或SIG_DFL(对该信号执行默认操作).**handler是一个函数指针,它所指向的函数的类型是sighandler_t,即它所指向的函数有一个int型参数,且返回值的类型为void
      
      *signal函数执行成功时返回以前的信号处理函数指针,当有错误发生时则返回SIG_ERR(即-1).

sigaction函数

  1. *sigaction函数可以用来检查或设置进程在接收到信号时的动作,在Shell下输入man sigaction可获取该函数的原型:

 这里写图片描述

*sa_flags成员
 *SA_NOMASK或SA_NODEFER:在信号处理函数结束前允许此信号再次递送,相当于中断嵌套.

不可重入函数
1>.使用了静态的数据结构,如getgrgid(),全局变量等.
2>.函数实现时,调用了malloc()或者free()函数.
3>.函数实现时,使用了标准I/O函数.
  称数据会被破坏的函数为不可重入函数.编写信号处理函数时不要使用不可重入函数.

pause函数

*pause函数使调用进程挂起直至扑捉到一个信号.在shell下输入man pause可得函数原型如下:

这里写图片描述

*pause函数会令目前的进程暂停,即进入睡眠状态,直到被信号signal中断.该函数只返回-1,并将error设置为EINTR

发表评论

表情:
评论列表 (有 0 条评论,267人围观)

还没有评论,来说两句吧...

相关阅读

    相关 第一章: 信号信号处理

    第一:信号可以由一个或者多个源产生 ,前一种信号称之为标量信号;后一种信号称之为向量信号,或者说是多通道信号。 第二: 一维信号是一个自变量函数,二维信号是两个自变量函数,多

    相关 Linux编程---信号处理

    信号是一种异步的进程间通信的方式.但是这种通知方式能交换的信息很少.只能说给一个事件的标志.类似单片机中的中断,强迫进程停止做当前应当做的事情,而去执行中断执行程序. 信号的

    相关 Linux信号处理

    大家应该都了解当我们在Linux下面运行程序时,如果程序跑飞了,那我们可以通过Ctrl-C来终止掉跑飞的程序,其实,当我们按下Ctrl-C时,涉及到了信号的相关处理工作,所以,