码迷,mamicode.com
首页 > 其他好文 > 详细

catch signal

时间:2015-12-03 23:17:19      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:

捕抓信号

如果信号的处理动作是用户自定义函数,在信号递达时就调用这个函数,称为捕抓信号。

sighandler和main函数使用不同的堆栈空间,sighandler函数返回后自动执行特殊的系统调用sigreturn再次进入内核态。内核态切换到用户态执行main函数前要先扫描信号,处理信号后再执行main函数部分。

  • 发送信号kill

#include <signal.h>

int kill(pid_t pid, int signo);

  • 注册信号处理signal(不推荐)

#include <signal.h>

typedef void (*sighandler_t)(int);

sighandler_t signal(int signum, sighandler_t handler);

  • 发送信号sigqueue
  • 注册信号处理函数sigaction

int sigaction(int signo, const struct sigaction *act, struct sigaction *lact);

成功0, 失败-1.

struct sigaction {

void (*sa_handler)(int); /* or SIG_IGN, SIG_DFL */

sigset_t sa_mask; /*addition signals to block*/

int sa_flags; /*0则信号处理函数为sa_handler();SA_SIGINFO,信号处理函数为sa_sigaction*/

void (*sa_sigaction)(int, siginfo_t *, void *);

};

catch signal

标签:

原文地址:http://www.cnblogs.com/embedded-linux/p/5017892.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!