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. (转)linux口令相关文件(/etc/passwd和/etc/shadow)

    在linux中,口令文件在/etc/passwd中,早期的这个文件直接存放加密后的password,前两位是"盐"值,是一个随机数.后面跟的是加密的password.为了安全,如今 ...

  2. 二分查找(c &amp; c++)

    typedef int ElemType; C版本号 [递归版本号] int binSearch2(ElemType List[] ,int x,int head,int tail){ //递归版本号 ...

  3. 【第7篇】TypeScript泛型的案例代码具体解释

    8.1最简单泛型样例 Ts代码 /** * 没有泛型,我们要么必须给身份功能的特定类型 */ function identity1(arg: number): number { return arg; ...

  4. c# 删除程序占用的文件,强力删除文件,彻底删除文件,解除文件占用

    c# 删除程序占用的文件.清理删除文件.彻底删除文件,解除文件占用 文件打开时,以共享读写模式打开 FileStream inputStream = new FileStream(name, File ...

  5. bzoj4977 跳伞求生——贪心

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4977 今天讲的贪心题,真神奇啊: 首先,要得到尽量多选队友的解: 把队友按 a[i] 从小到 ...

  6. XML案例(使用JAXP进行DOM解析)

    1.book.xml <?xml version="1.0" encoding="UTF-8" standalone="no"?> ...

  7. codevs1288 埃及分数(IDA*)

    1288 埃及分数  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond     题目描述 Description 在古埃及,人们使用单位分数的和(形如1/a的 ...

  8. 汇编程序18:利用and和or指令变换大小写

    assume cs:code,ds:data //and指令使某位变0,or指令使某位变1 data segment db 'BaSic','iNfOrMaTiOn' //db指令:定义字节数据,与d ...

  9. 【Linux】VMware安装VMware Tools工具

    VMware Tools是VMware虚拟机中自带的一种增强工具,相当于VirtualBox中的增强功能(Sun VirtualBox Guest Additions),是VMware提供的增强虚拟显 ...

  10. JavaOO知识点小结一

    Java语言的特点是什么?简单 面向对象 跨平台 多线程 健壮性安全性 垃圾回收机制如何编译和执行java文件?产生帮助文档用什么命令?编译: javac 文件名执行: java 类名产生帮助文档 j ...