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[]:无名管道写入数据端

最新文章

  1. 转载一篇React native的props的用法
  2. 为图片添加九宫格信息-UI界面编辑器(SkinStudio)教程
  3. 酷摄影:关于梦 - Miki takahashi
  4. 取caml查询结果的前多少行
  5. 【搬运】一分钟快速入门OpenStack
  6. SQLServer 安装以前的某个程序安装已在安装计算机上创建挂起的文件操作 解决办法
  7. 通过jpegoptim批量压缩文件
  8. 《转载》值得学习!Google的编程样式指南
  9. sql点滴38—SQL Server 2008和SQL Server 2008 R2导出数据的选项略有不同
  10. Struts2 程序步骤
  11. React&amp;Webpack 环境安装
  12. java1.8新特性
  13. 手把手教你用npm发布一个包,详细教程
  14. cas-5.3.x接入REST登录认证,移动端登录解决方案
  15. Sobel 边缘检测算子
  16. 【原创】运维基础之Ansible(1)简介、安装和使用
  17. Putty的用法
  18. WEB后台认证机制
  19. 浅谈Retrofit2+Rxjava2
  20. 20155233 《Java程序设计》 实验三 敏捷开发与XP实践

热门文章

  1. 目标跟踪学习系列十:Struck:Structured Output Tracking with Kernels 代码调试
  2. [Windows]_[0基础]_[Release程序的崩溃报告minidump解决方式]
  3. POJ 3653 &amp;amp; ZOJ 2935 &amp;amp; HDU 2722 Here We Go(relians) Again(最短路dijstra)
  4. 详略。。设计模式1——单例。。。。studying
  5. DotNetBar.Bar作为容器使用的方法及Text更新原理
  6. 4、angularJS过滤器
  7. HDU1573 X问题【一元线性同余方程组】
  8. Android休眠唤醒机制简介(二)
  9. Mongo 中间件 pre find 修改query
  10. 2017 Multi-University Training Contest - Team 2 &amp;hdu 6055 Regular polygon