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. SSH框架之Struts(3)——Struts的执行流程之核心方法

    上篇讲了Tomcat实例化一个单例的ActionServlet.依据web.xml配置文件做好对应的初始化工作. 这时client产生一个.do结尾的request请求,採用get/post方式提交之 ...

  2. Candy [leetcode] O(n)时间复杂度,O(1)空间复杂度的方法

    对于ratings[i+1],和ratings[i]的关系有下面几种: 1. 相等.相等时ratings[i+1]相应的糖果数为1 2.ratings[i + 1] > ratings[i].在 ...

  3. hdu3371 Connect the Cities (MST)

    Connect the Cities Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  4. MyBatis -- 对表进行增删改查(基于注解的实现)

    1.MyBatis对数据库表进行增/删/改/查 前一篇使用基于XML的方式实现对数据库的增/删/改/查 以下我们来看怎么使用注解的方式实现对数据库表的增/删/改/查 1.1  首先须要定义映射sql的 ...

  5. 1366 xth 的第 12 枚硬币

    1366 xth 的第 12 枚硬币  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解       题目描述 Description 传说 xth 曾 ...

  6. SQL SEVER 死锁// 解除死锁

    SQL SEVER 死锁 USE mastergo CREATE PROC killspid (@dbname VARCHAR (20))AS   BEGIN      DECLARE @sql NV ...

  7. spring:使用<prop>标签为Java持久属性集注入值

    spring:使用<prop>标签为Java持久属性集注入值 使用 spring 提供的<prop>为Java持久属性集注入值,也就是向 java.util.Propertie ...

  8. hdoj- Windows Message Queue

    Windows Message Queue Problem Description Message queue is the basic fundamental of windows system. ...

  9. B1821 [JSOI2010]Group 部落划分 Group 二分答案&&并查集

    这个题正解是最小生成树,但是...最大值最小?一看就是二分答案啊!不用多想,直接二分答案加暴力验证就行了. 题干: Description 聪聪研究发现,荒岛野人总是过着群居的生活,但是,并不是整个荒 ...

  10. bzoj1231[Usaco2008 Nov]mixup2 混乱的奶牛(状压dp)

    1231: [Usaco2008 Nov]mixup2 混乱的奶牛 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1032  Solved: 588[ ...