C标准库参考指南(9)signal.h

9. signal.h

头文件signal处理程序运行时产生的信号的方法。

宏:

SIG_DFL

SIG_ERR

SIG_IGN

SIGABRT

SIGFPE

SIGILL

SIGINT

SIGSEGV

SIGTERM

函数:

signal();

raise();

变量:

typedef sig_atomic_t

9.1. 变量和定义

类型sig_atomic_t就是int,作为signal函数的handler中的变量。SIG_宏用于signal函数中用于定义信号函数。

SIG_DFL   默认handler。

SIG_ERR   表示错误信号。

SIG_IGN   忽略信号。

SIG宏代表下列情况下的信号编号。

SIGABRT   异常终止(由abort函数产生)。

SIGFPE   浮点错误(由零除运行、不合理操作产生)。

SIGILL   非法操作(指令)。

SIGINT   交互信号(比如我们熟悉的Ctrl-C)。

SIGSEGV   非法存储访问(段错误,内存错误)。

SIGTERM   终止请求。

9.2. signal

声明:

void (*signal(int sig, void (*func)(int)))(int);

该函数管理一个信号应该如何被操控。sig代表与SIG宏相容的信号编号。func函数会在信号产生时被调用。如果函数是SIG_DFL,则调用默认的handler。如果func是SIG_IGN,则信号被忽略。如果func指向一个函数,那么当检测到一个信号并执行默认handler时,该函数会被调用。函数必须携带一个int参数代表信号编号。函数可能被return,abort,exit,或者longjmp终止。当函数终止时,程序继续从中断处执行(除非是结果未定义的信号SIGFPE)。

如果信号调用成功,则返回指向之前特定信号类型的handler的指针。如果信号调用失败,则返回SIG_ERR并且将errno设置一个合理值。

时间: 2025-01-27 06:53:02

C标准库参考指南(9)signal.h的相关文章

C标准库参考指南(1)assert.h

1.1 assert.h 断言头文件用于调试. 宏: assert(); 外部引用: NDEBUG 1.1. assert 声明: void assert(intexpression); 断言头文件中的宏允许你将一些特殊信息写入到标准错误文件. 如果表达式的值为0(false),那么表达式.源文件名和行号都会被发送给标准错误输出,并调用abort函数.如果标识符NDEBUG ("no debug")由#define NDEBUG定义,那么断言头文件中的宏就什么都不做. 标准错误输出的格

C标准库参考指南(11)stddef.h

11. stddef.h 头文件stddef提供了一些标准定义.其中很多定义也会出现在其他头文件中. 宏: NULL offsetof(); 类型: typedef ptrdiff_t typedef size_t typedef wchar_t 11.1. 变量和定义 ptrdiff_t是相减两个指针的结果. size_t是无符号整型. wchar_t是一个具有宽字符常量大小的整型. NULL是空指针常量值. offsetof(type, member-designator) 他会产生一个si

C标准库参考指南(10)stdarg.h

10. stdarg.h stdarg头文件定义了当函数参数个数位置时用于获取参数的宏. 宏: va_start(); va_arg(); va_end(); 类型: typedef va_list 10.1. 变量和定义 va_list适用于进入带有stdarg宏的函数的参数的类型. 一个带有不确定个数参数的函数,用(,...)在参数列表的末尾来标示. 10.2. va_start 声明 : void va_start(va_list ap, last_arg); 初始化与va_arg和va_

C标准库参考指南(8)setjmp.h

8. setjmp.h 头文件setjmp用于控制底层调用和函数跳转. 宏: setjmp(); 函数: longjmp(); 变量: typedef jmp_buf 8.1. 变量和定义 变量jmp_buf是一个数组类型,用于存储setjmp和longjmp信息. 8.2. setjmp 声明: int setjmp(jmp_buf environment); 存储当前运行环境environment变量中.如果返回一个非零值,则表明longjmp到达了源码中所运行到的位置.否则表明运行环境已被

C标准库参考指南(12)stdio.h(A)

12. stdio.h 标准输入输出头文件提供用于输入和输出的函数. 宏: NULL _IOFBF _IOLBF _IONBF BUFSIZ EOF FOPEN_MAX FILENAME_MAX L_tmpnam SEEK_CUR SEEK_END SEEK_SET TMP_MAX stderr stdin stdout 函数: clearerr(); fclose(); feof(); ferror(); fflush(); fgetpos(); fopen(); fread(); freop

C标准库参考指南(7)math.h

7. math.h 数学头文件定义了很多数学函数. 宏: HUGE_VAL 函数: acos(); asin(); atan(); atan2(); ceil(); cos(); cosh(); exp(); fabs(); floor(); fmod(); frexp(); ldexp(); log(); log10(); modf(); pow(); sin(); sinh(); sqrt(); tan(); tanh(); 7.1.错误条件 所有math.h函数产生错误的情形都是类似的.

C标准库参考指南(6)locale.h

6. locale.h 头文件locale对设置具体位置信息很有用. 变量: struct lconv 宏: NULL LC_ALL LC_COLLATE LC_CTYPE LC_MONETARY LC_NUMERIC LC_TIME 函数: localeconv(); setlocale(); 6.1. Variables and Definitions 数据结构"lconv"包含下面这些成员变量.这个数据结构的使用,将在"6.3 localeconv"中描述.

C标准库参考指南(5)limits.h

5. limits.h 该头文件定义了变量类型的特点. 5.1. Defined Values 下面这些值由#define指令定义.这些值由实现所确定,但一般不会比下面给出的值小. 英文原文:http://www.acm.uiuc.edu/webmonkeys/book/c_guide/2.5.html 原文作者:Eric Huss 中文译者:柳惊鸿 Poechant 版权声明:本文的原文版权归Eric Huss所有,中文译文版权归Poechant所有.转载请注明来自"柳大的CSDN博客&quo

C标准库参考指南(4)float.h

4. float.h 浮点数头文件定义了一个浮点数值的上下限. 4.1. Defined Values 浮点数以下面的方式定义. sign value E exponent 其中sign是正号或者负号,value是数值,exponent是指数. 下面这些宏值由#define定义.这些值是由具体运行的平台环境特定实现,但不会比这里所给出的值小.注意在所有的宏名中,FLT是浮点类型的缩写,DBL是double的缩写,LDBL是long double缩写. 英文原文:http://www.acm.ui