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

signal

时间:2015-12-03 22:55:23      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:

signal

1.kill -l 显示所有信号

2.产生信号

ctrl+c => SIGINT

ctrl+\ => SIGQUIT

ctrl+z => SIGTSTP

信号9,19不能被阻塞,不能被忽略。

kill命令默认发送信号15(SIGTERM)。

3.系统默认信号处理方式

  • SIGCHLD 忽略
  • 其余结束进程。

4.操作函数

  • kill

#include <signal.h>

int kill(pid_t pid, int signo);

  • raise自发信号

int raise(int signo);

  • abort 自发SIGABRT信号,终止

void abort(void);

  • alarm闹钟

unsigned int alarm(unsigned int sec);

原来没有调度alarm返回0或以前设定的闹钟时间还剩多少秒。如果sec为0,表示取消以前设定的闹钟,返回剩余的秒数。

5.阻塞信号集函数

阻塞信号集也叫当前进程的信号屏蔽字(signal Mask)。

#include <signal>

int sigemptyset(sigset_t *set);置0

int sigfillset(sigset_t *set);置1

int sigaddset(sigset_t *set, int signum);某位置1

int sigdelset(sigset_t *set, int signum);某位置0

成功0,失败-1.

int sigismember(const sigset_t *set, int signum);

包含该位返回1,不包含返回0,错误返回-1.

6.信号集函数

int sigpromask(int how, const sigset_t *set, sigset_t *oset);

成功返回0,失败返回-1;

how:SIG_BLOCK +, SIG_UNBLOCK -, SIG_SETMASK.

int sigpending(sigset_t *set);

读取未决信号集。

成功0,失败-1。

注:实际执行信号的处理动作称为信号递达(Delivery);未决(信号从产生到递达之间)。

int pause(void);

pause函数使调用进程挂起直到有信号递达。信号的处理动作是终止进程,则进程终止,pause不能返回;忽略,则进程处于挂起状态,pause不返回;捕抓,则调用信号处理函数后pause返回-1,errno置为EINTR。

pause只有出错的返回值。

int sigsuspend(const sigset_t *sigmask);

和pause一样,无成功返回值。

只有执行了一个信号处理函数后,sigsuspend才返回,返回-1,errno置为EINTR。

注:sigsuspend临时用sigmask取代信号屏蔽字,挂起进程。调用sigsuspend时应将想获取的信号从原来的信号屏蔽子中移除填充到sigmask中。

signal

标签:

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

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