Summary Day34
2015-06-14 01:46
169 查看
1. 信号的处理
1.1 信号集的概念和使用
信号集结构体:
typedeg struct {
unsigned ling int __val[1024 / (8 * sizeof(unsigned l))];
} __sigset_t;
typedef __sigset_t sigset_t;
信号集的相关处理函数
sigemptyset() => 清空
sigfillset() => 填满
sigaddset() => 增加
sigdelset() => 删除
sigismenber() => 判断信号是否存在
1.2 信号的屏蔽
(1)概念
(2)sigprocmask函数
#include <signal.h>
Int sigprocmask(int how, const sigset_t *set, sigset_t *oldset);
第一个参数:屏蔽的方式
SIG_BLOCK
SIG_UNBLOCK
SIG_SETMASK
第二个参数“新的信号集
第三个参数:旧信号集
函数功能:主要用于修改、检查屏蔽信号集
(3)sigpending函数
#include <signal.h>
int sigpending(sigset_t *set);
函数功能:
主要用于获取信号屏蔽期间来过却没有被处理的信号,将获取的信号填充到参数set中
1.3 sigaction 函数
#include <signal.h>
int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);
第一个参数:信号值、信号名称
第二个参数:设置信号的新处理方式
struct sigaction {
void (*sa_handler)(int);
=>函数的指针类型,信号的处理方式一,自定义信号处理函数
=>和signal函数参数二一致,SIG_IGN,SIG_DEL函数名
void (*sa_sigaction)(int, siginfo_t *, void*);
=>函数指针,信号的处理方式二
=>是否采用该处理取决于下面的sa_flags的值
sigset_t sa_mask;
=>存放在执行信号处理函数期间需要屏蔽的信号
=>自动屏蔽与处理信号相同的信号,除非使用SA_NODEFER
int sa_mask;
=>SA_SIGINFO 表示采用第二个函数指针处理信号
=>SA_NODEFER 表示解除处理信号相同的信号屏蔽
=>SA_RESETHAND 表示信号处理函数执行后恢复默认方式
void (*sa_restorer)(void);
=>保留成员,暂时不使用,为了扩展
}
获取信号之前的处理方式
函数的功能: 主要用于获取、修改信号的处理方式
其中结构体中第二个函数指针的第二个参数类型如下:
siginfo_t
{
pid_t si_pid;
sigval si_value;
}
1.4 sigqueue函数
int sigqueue(pid_t pid, int sig, const union sigval value);
第一个参数:进程号
第二个参数:信号值
第三个参数:;联合变量,发送附加数据
函数功能:主要用于指定进程发送信号和附加数据
1.5 计时器的概念和使用
2进程间的通信
2。1概念
2.2进程间通信方式
文件、信号、管道、共享内存、消息队列、信号量集、网络
3. 使用消息队列实现进程间的通信
3.1 基本流程
(1)获取 key值,使用ftok函数
(2)创建、获取消息队列,使用msgget函数
(3)发送、接受消息队列中的消息,使用msgsnd/msgrcv函数
(4)如果不在使用,则删除消息队列,使用msgctl函数
1.1 信号集的概念和使用
信号集结构体:
typedeg struct {
unsigned ling int __val[1024 / (8 * sizeof(unsigned l))];
} __sigset_t;
typedef __sigset_t sigset_t;
信号集的相关处理函数
sigemptyset() => 清空
sigfillset() => 填满
sigaddset() => 增加
sigdelset() => 删除
sigismenber() => 判断信号是否存在
1.2 信号的屏蔽
(1)概念
(2)sigprocmask函数
#include <signal.h>
Int sigprocmask(int how, const sigset_t *set, sigset_t *oldset);
第一个参数:屏蔽的方式
SIG_BLOCK
SIG_UNBLOCK
SIG_SETMASK
第二个参数“新的信号集
第三个参数:旧信号集
函数功能:主要用于修改、检查屏蔽信号集
(3)sigpending函数
#include <signal.h>
int sigpending(sigset_t *set);
函数功能:
主要用于获取信号屏蔽期间来过却没有被处理的信号,将获取的信号填充到参数set中
1.3 sigaction 函数
#include <signal.h>
int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);
第一个参数:信号值、信号名称
第二个参数:设置信号的新处理方式
struct sigaction {
void (*sa_handler)(int);
=>函数的指针类型,信号的处理方式一,自定义信号处理函数
=>和signal函数参数二一致,SIG_IGN,SIG_DEL函数名
void (*sa_sigaction)(int, siginfo_t *, void*);
=>函数指针,信号的处理方式二
=>是否采用该处理取决于下面的sa_flags的值
sigset_t sa_mask;
=>存放在执行信号处理函数期间需要屏蔽的信号
=>自动屏蔽与处理信号相同的信号,除非使用SA_NODEFER
int sa_mask;
=>SA_SIGINFO 表示采用第二个函数指针处理信号
=>SA_NODEFER 表示解除处理信号相同的信号屏蔽
=>SA_RESETHAND 表示信号处理函数执行后恢复默认方式
void (*sa_restorer)(void);
=>保留成员,暂时不使用,为了扩展
}
获取信号之前的处理方式
函数的功能: 主要用于获取、修改信号的处理方式
其中结构体中第二个函数指针的第二个参数类型如下:
siginfo_t
{
pid_t si_pid;
sigval si_value;
}
1.4 sigqueue函数
int sigqueue(pid_t pid, int sig, const union sigval value);
第一个参数:进程号
第二个参数:信号值
第三个参数:;联合变量,发送附加数据
函数功能:主要用于指定进程发送信号和附加数据
1.5 计时器的概念和使用
2进程间的通信
2。1概念
2.2进程间通信方式
文件、信号、管道、共享内存、消息队列、信号量集、网络
3. 使用消息队列实现进程间的通信
3.1 基本流程
(1)获取 key值,使用ftok函数
(2)创建、获取消息队列,使用msgget函数
(3)发送、接受消息队列中的消息,使用msgsnd/msgrcv函数
(4)如果不在使用,则删除消息队列,使用msgctl函数
相关文章推荐
- 使用OPENROWSET(BULK...)从平面文件加载数据
- Design Support Library中Snackbar控件的简单用法
- 哈希表操作改进
- 一道初中数学题
- Linux 破解root用户密码
- 【Cordova】Cordova开发
- 测试一下博客
- Linux安装Cacti
- OpenStack ironic发送物理机SEL信息到Ceilometer
- 为macbook双系统的windows装驱动
- 为macbook双系统的windows装驱动
- Selenium使用过程中碰到的问题
- DICOM:开源书籍之『DICOM标准中文版』启动计划
- uva 10944 Nuts for nuts..(状压dp)
- c/c++与java------之JNI学习(一)
- LeetCode Word Ladder II
- python opencv face detection
- 算素因子种类数个个数的题目
- 【设计模式】【单例类】
- Java8 Stream forEach()函数的效率问题