当前位置: C语言 -- 标准库 -- <signal.h> -- raise

raise函数


概要:
#include <signal.h>
int raise(int sig);

描述:

该函数给当前执行程序发送信号sig

如果调用了信号处理程序,raise函数在信号处理程序完成后返回。


参数:
int sig

信号值,ISO/IEC 9899:2018标准定义了以下信号宏:

对应术语 描述
SIGABRT abort 异常终止,例如:调用abort函数引发的异常终止。
SIGFPE floating-point exception 错误的算术运算,例如:除以0或者导致溢出的运算。
SIGILL illegal instruction 检测到无效函数映像,例如:无效指令。
SIGINT interrupt 收到交互式注意信号。
SIGSEGV segmentation violation 对存储的无效访问。
SIGTERM termination 发送给程序的终止请求。

具体实现还可能定义以SIG和一个大写字母或者SIG_和一个大写字母开头的信号宏。


返回值:

如果成功,函数返回0;如果不成功,函数返回非0值。


范例:
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
/*函数raise范例*/

#include <signal.h>
#include <stdio.h>

sig_atomic_t signalStatus = 0;

void signalHandler(int parameter)
{
    signalStatus = parameter;
}

int main(void)
{
    signal(SIGINT, signalHandler);
    raise(SIGINT);
    printf("signalStatus: %d\n", signalStatus);

    return 0;
}


输出:

signalStatus: 2


GCC编译器<signal.h>头文件中,不同信号的信号值定义如下:

#define  SIGINT    2

#define  SIGILL    4

#define  SIGFPE    8

#define  SIGSEGV   11

#define  SIGTERM   15

#define  SIGBREAK  21

#define  SIGABRT   22


相关内容:
sig_atomic_t 对象整数类型。
signal 指定信号处理函数。