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

SIG_ERR宏


概要:

#define SIG_ERR pointer //pointer由具体实现定义。


描述:

该宏会扩展为常量表达式,其类型与signal函数第二个参数和返回值的类型兼容,其值与任何可声明函数的地址都不相等。

如果signal函数返回该宏,则表明发生了错误。


GCC编译器<signal.h>头文件中,该宏定义如下:

typedef void (*__p_sig_fn_t)(int);

#define SIG_ERR ((__p_sig_fn_t) -1)


范例:
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
/*宏SIG_ERR范例*/

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

sig_atomic_t signalStatus = 0;

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

int main(void)
{
    if(signal(SIGINT, signalHandler) == SIG_ERR)
    {
        perror("Error");
        exit(EXIT_FAILURE);
    }

    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_DFL 默认处理宏。
SIG_IGN 忽略信号宏。