C标准库参考指南系列译文(9)signal.h

英文原文:http://www.acm.uiuc.edu/webmonkeys/book/c_guide/2.9.html

原文作者:Eric Huss

中文译者:柳惊鸿 Poechant

版权声明:本文的原文版权归Eric Huss所有,中文译文版权归Poechant所有。转载请注明来自"柳大的CSDN博客"http://blog.csdn.net/poechant


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。如果funcSIG_IGN,则信号被忽略。如果func指向一个函数,那么当检测到一个信号并执行默认handler时,该函数会被调用。函数必须携带一个int参数代表信号编号。函数可能被returnabortexit,或者longjmp终止。当函数终止时,程序继续从中断处执行(除非是结果未定义的信号SIGFPE)。


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


9.3. raise

声明:

int raise(intsig);


产生sig信号。sig参数要与SIG宏兼容。


如果调用成功,会返回0。否则返回非零值。


实例:


#include<signal.h>

#include<stdio.h>


void catch_function(int);


int main(void)

{

if(signal(SIGINT, catch_function)==SIG_ERR)

{

printf("An error occured while setting a signal handler.\n");

exit(0);

}


printf("Raising the interactive attention signal.\n");

if(raise(SIGINT)!=0)

{

printf("Error raising the signal.\n");

exit(0);

}

printf("Exiting.\n");

return 0;

}


void catch_function(int signal)

{

printf("Interactive attention signal caught.\n");

}


程序运行输出结果(假设没有错误):


Raising the interactive attention signal.

Interactive attention signal caught.

Exiting.


该系列译文在持续更新中⋯⋯

C标准库参考指南系列译文(1)assert.h

C标准库参考指南系列译文(2)ctype.h

C标准库参考指南系列译文(3)errno.h

C标准库参考指南系列译文(4)float.h

C标准库参考指南系列译文(5)limits.h

C标准库参考指南系列译文(6)locale.h

C标准库参考指南系列译文(7)math.h

C标准库参考指南系列译文(8)setjmp.h

C标准库参考指南系列译文(9)signal.h

C标准库参考指南系列译文(10)stdarg.h

C标准库参考指南系列译文(11)stddef.h

C标准库参考指南系列译文(12)stdio.h(A)


版权声明:本文的原文版权归Eric Huss所有,中文译文版权归Poechant所有。转载请注明来自"柳大的CSDN博客"http://blog.csdn.net/poechant

-

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值