1.信号处理

#include <signal.h>

typedef void(*sighander_t)(int);

sighander_t signal(int signum,sighander_t hander)
成功返回原信号处理方式,失败返回SIGERR --signum :信号编号
--hander: 信号处理方式
    SIG_IGN:忽略信号
    SIG_DFL:默认操作
    信号处理函数指针 -捕获信号

2.信号处理函数

void sighander(int signum)
{
信号处理代码;
}

3.调用函数发送信号

  杀死进程信号

#include <signal.h>

int kill (pid_t pid,int signum);

  成功发送信号并返回0,失败-

  

  向调用进程发送信号

#include <signal.h>

int raise(int signum);

raise函数是向调用进程发送信号
对单线程程序来说,相当于
kill(getpid,signum);
对多线程程序来说,相当于
pthread_kill(pthread_self,signum);

4.暂停

#include <unistd.h>

int pause(void);
该函数无时限睡眠,只到收到信号发生,改变自身状态
成功阻塞,失败-;

5.睡眠

  sleep(seconds)

#include <unistd.h>

unsigned int sleep(unsigned int seconds);

返回0或剩余秒数

该函数调用进(线)程睡眠seconds秒,除非信号打破这种状态

  

  usleep

#include <unistd.h>

 int usleep(usecond_t usec);

--usec 微秒
成功返回0,失败 -

6.闹钟

  alarm

#include <unistd.h>

unsigned int alarm(unsigned int  seconds);

返回剩余秒数

7.信号集

  填满信号集

#include <signal.h>

int sigfillset(sigset_t* sigset);

--sigset :信号集

  

  清空信号集

#include <signal.h>

int sigemptyset(sigset_t* sigset);

成功0,失败-

  

  加入信号

#include <signal.h>

int sigaddset(sigset_t* sigset,int signum);

成功0,失败-

--sigset :信号集
--signum:信号编号

  

  删除信号

#include <signal.h>

int sigdelete(sigset_t* sigset,int signum);

成功0,失败-

  

  判断信号是否在信号集中

#include <signal.h>

sigismember(const sigset_t* sigset,int signum);

有返回1,没有0,失败-

8.信号屏蔽

  信号掩码

#include <signal.h>

int sigprocmask(int  how,const sigest_t* sigset,sigset_t* oldsigset);

--how有一下取值
SIG_BLOCK 将sigset信号加入当前信号掩码
SIG_UNBLOCK 从当前信号掩码中删除sigset信号
SIG_SETMASK sigset设置当前信号掩码

  获取调用进程的未决信号

#include <signal.h>

int sigpending(sigset_t* sigset);

成功返回0,失败返回-

输出未决信号集 sigset

9.定时器

  

#include <sys/time.h>

int setitimer(int which,
const struct itimerval* new_value,
struct itimercal* old value); 成功返回0,失败返回- --which有下面取值
ITIMER_REAL 真实定时器
ITIMER_VIRTUAL 虚拟定时器
ITIMER_PROF 实用定时器 struct itimerval{
//重复间隔,取0发送一个信号后,停止
struct timerval it_interval;
//初始间隔,取0立即停止计时器
struct timerval it_value;
}; struct timerval{
long tv_sec;
long tv_usec;
};

10.管道

  mkfifo  myfifo //创建有名管道

  

#include <sys/stat.h>

int mkfifo(const char* pathname,
mode_t mode); --pathname :文件路径
--mode:权限模式

  无名管道--   用于父子进程通信

#include <unistd.h>

int pipe(int pipefd[]);

成功0,失败-

pipefd:输出两个文件描述符

pipefd[]: 无名管道读取数据端
pipefd[]:无名管道写入数据端

UNIX C 信号的更多相关文章

  1. Linux/UNIX之信号(1)

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/walkerkalr/article/details/24462723 信号(1) 信号是软件中断.每 ...

  2. Linux/UNIX之信号(2)

    信号(2) sigaction函数 sigaction函数的功能是检查或改动与制定信号相关联的处理动作.此函数代替了signal函数. #include <signal.h> int si ...

  3. UNIX环境高级编程--10. 信号

    第十章        信号    信号是软中断,提供了一种处理异步事件的方法.例如,终端用户键入终端键,会通过信号机制停止一个进程,或及早终止管道中的下一个程序.    每个信号都有一个名字,SIG开 ...

  4. UNIX环境高级编程——可靠信号与不可靠信号

    在早期的UNIX中信号是不可靠的,不可靠在这里指的是:信号可能丢失,一个信号发生了,但进程却可能一直不知道这一点. 现在Linux 在SIGRTMIN实时信号之前的都叫不可靠信号,这里的不可靠主要是不 ...

  5. Unix环境高级编程(九)信号

    信号时软中断,很多比较重要的应用程序都需要处理信号,信号提供了一种处理异步事件的方法.每个信号都一个名字,以SIG开头,在<signal.h>头文件中定义信号类型,都是正整数(信号编号). ...

  6. Unix/Linux进程间通信(一):概述

    序 Linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的.而对Unix发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心)在进 ...

  7. 信号之signal函数

    UNIX系统的信号机制最简单的接口是signal函数.signal函数的功能:为指定的信号安装一个新的信号处理函数. #include <signal.h> void (*signal(i ...

  8. Linux环境进程间通信(二):信号(下)

    linux下进程间通信的几种主要手段: 管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允 ...

  9. Linux环境进程间通信(二): 信号(上)

    linux下进程间通信的几种主要手段: 管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允 ...

随机推荐

  1. Office 365 的公共网站的一些限制及解决的办法

    当前的SharePoint Online版本是基于SharePoint 2013的,但是很多功能确被阉割掉了. 下面主要列出Office 365公共网站被限制的功能,以及可绕过的解决方案: 内容类型 ...

  2. 2014腾讯实习生笔试题——define与typedef

    2014腾讯实习生笔试(广州站)第26题填空题: #define MAX_NUM 1000+1 int Temp = Max_NUM*10; 则Temp的值为( ) 答案是:1010, 由于宏定义仅仅 ...

  3. luogu2320 鬼谷子的钱袋

    题目大意 鬼谷子决定将自己的金币数好并用一个个的小钱袋装好,以便在他现有金币的支付能力下,任何数目的金币他都能用这些封闭好的小钱的组合来付账.求钱袋数最少,并且不有两个钱袋装有相同的大于1的金币数的装 ...

  4. POJ2559 Largest Rectangle in a Histogram 单调栈

    题目大意 有一个直方图,其所有矩形的底均是1(以后简称小矩形).给出这些矩形的高度,求这些矩形的并集中存在的面积最大的矩形(简称大矩形)的面积. 题解 大矩形的高必然一边等于一个小矩形的高,另一边小于 ...

  5. js简单函数封装

    //每index个字符插入一个str字符串 String.prototype.insertStrPerIndex =function(index,str){ if(this.length>ind ...

  6. 虚拟机中的ip和本机的ip不是一个网段的

    将虚拟机的网络适配器 模式改为桥接模式 然后就会和主机处于同一个网段了

  7. hdu 2205(容斥原理)

    Eddy's爱好 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  8. Unity5.3.6升级到Unity5.4.4 NGUI出现Ignoring menu item NGUI because it is in no submenu!问题解决方案

    目录Assets/Plugins/NGUI/Scripts/Editor/NGUIMenu.cs文件中找到下图(左)所示,改成(右)图所示

  9. 一个能让cin和scanf 一样快的方法:

    cin慢是有原因的,其实默认的时候,cin与stdin总是保持同步的,也就是说这两种方法可以混用,而不必担心文件指针混乱,同时cout和stdout也一样,两者混用不会输出顺序错乱.正因为这个兼容性的 ...

  10. HTML中javascript使用dom获取dom节点范例

    <!-- HTML结构 --> <div id="test-div"> <div class="c-red"> <p ...