函数简介篇——信号相关函数

说明
  本文章旨在总结备份、方便以后查询,由于是个人总结,如有不对,欢迎指正;另外,内容大部分来自网络、书籍、和各类手册,如若侵权请告知,马上删帖致歉。
  QQ 群 号:513683159 【相互学习】
内容来源
  《Unix环境高级编程》、man 手册

目录:

    • 信号函数
        • (一)signal()——信号截取【man 2 signal】
        • (二)kill()——将信号发送给进程/进程组【man 2 kill】
        • (三)raise()——允许向进程自身发送信号【man 3 raise】
        • (四)alarm()——向当前进程发送SIGALRM信号【man 2 alarm】
        • (五)pause()——挂起等待信号打断【man 2 pause】
        • (六)abort()——人为制造异常【man 3 abort】

信号函数

(一)signal()——信号截取【man 2 signal】

  1.函数功能:截取系统的信号(signum),对该信号挂接用户自己的处理函数(handler)返回该信号之前的处理函数(行为)。

项目 说明
函数原型 sighandler_t signal(int signum, sighandler_t handler);
头文件 signal.h
参数说明 signum:整型数(信号)
handler:函数指针(行为,信号处理函数/信号捕捉函数)
(该函数一个整型参数,无返回值,具体如下:)
返回值 返回以前信号处理程序的指针,该函数无返回值
注意 ①若handler为SIG_IGN表示忽略该信号,
②若handler为SIG_DFL表示系统默认动作

  2.函数指针指向的函数类型

/* 信号处理程序的类型  */
typedef void (*__sighandler_t) (int);

  3.示例
    【请点击:【Linux】函数示例篇——signal(附前后台切换)】

(二)kill()——将信号发送给进程/进程组【man 2 kill】

  1.函数功能
    若pid > 0,则向pid进程发送sig
    若pid == 0,则向当前进程所属进程组中的所有进程发送sig
    若pid == -1,除init进程(1)外的所有看得见的进程。
    若pid < -1,发送sig给进程组-pid中的所有进程。
    若sig == 0,不会发送任何信号,但被用来检错(一个进程或进程组是否存在)。

项目 说明
函数原型 int kill(pid_t pid, int sig);
头文件 sys/types.h、signal.h
参数说明 pid:发送信号的对象
(不同值的效果不相同)
sig:信号
返回值 成功则返回0,
失败则返回-1.
注意 若返回-1并不一定表明该进程不存在,还可能没有权限,要进一步判断宏

(三)raise()——允许向进程自身发送信号【man 3 raise】

  1.函数功能:发送sig给自己(raise(signo) 等同于 kill(getpid(),signo)

项目 说明
函数原型 int raise(int sig);
头文件 signal.h
参数说明 sig:信号
返回值 成功则返回0,
失败则返回非0
注意

(四)alarm()——向当前进程发送SIGALRM信号【man 2 alarm】

  1.函数功能:设置一个计时器,若时间超时则用于发送SIGALRM信号。

项目 说明
函数原型 unsigned int alarm(unsigned int seconds);
头文件 unistd.h
参数说明 seconds:时间(秒)
返回值 任何预定的警报即将被发送之前的剩余秒数,如果没有预定的警报,则返回0秒
注意 无法实现多任务的计时器(只能设置一个alarm()))

  2.示例:【Linux】函数示例篇——alarm()与pause()

(五)pause()——挂起等待信号打断【man 2 pause】

  1.函数功能:导致调用进程(或线程)处于休眠状态,直到发出信号终止进程或触发信号捕获函数的调用

项目 说明
函数原型 int pause(void);
头文件 unistd.h
参数说明
返回值 只在信号被捕获并且信号捕获函数返回时才返回
注意

  2.示例:【Linux】函数示例篇——alarm()与pause()

(六)abort()——人为制造异常【man 3 abort】

  1.函数功能:首先解除阻塞SIGABRT信号,然后为调用进程引发该信号(就像调用了raise(3)一样)。导致进程异常终止,发送SIGABRT信号

项目 说明
函数原型 void abort(void);
头文件 stdlib.h
参数说明
返回值
注意

你可能感兴趣的:(嵌入式,函数简介,linux,运维,服务器)