进程间通信————信号

                                                          信号

 

信号是在软件层次上对中断机制的一直模拟,是一种异步通信方式

 

linux内核通过信号通知用户进程, 不同的信号类型代表不同的事件

 

进程对信号有不同的响应方式

缺省方式

忽略信号

捕捉信号

进程间通信————信号

进程间通信————信号

SIGKILL和SIGSTOP这两个信号量 级别很高 只能执行默认操作 不能被捕捉和忽略

 

kill [-signal] pid

pid 发送对象(进程号或进程组 -1 代表除当前进程和int进程之外 其他都发送该信号)

-signal 可指定信号

 

向一个进程发送信号(默认发送15信号 也就是结束进程)

 

killall [-u user | prog]

prog指定进程号

-u user 指定用户名

默认发送信号15

 

                                                发送信号

 

#include <unistd.h>

#include <signal.h>

 

int kill(pid_t pid, int sig);

int raise(int sig);(只能向当前进程发信号)

 

成功返回0 失败返回EOF

pid 接收进程的进程号· 0代表同组进程 -1代表所有进程

sig 信号类型

·

int alarm(unsinged int seconds)

成功返回上一个定时器的剩余时间 失败返回EOF

seconds 定时器的时间 如果值为0 代表取消这个定时器

一个进程中只能设置一个定时器 时间到时 产生SIGALRM(默认结束进程)

 

int pause(void)

进程一直阻塞 直到被信号中断

被信号中断后 返回-1 error为EINTR

 

                                             设置信号响应方式

 

#include <unistd.h>

#include <signal.h>

void (*signal(int signo, void (*handler)(int)))(int);

 

成功返回原先的信号处理函数 失败返回 SIG_ERR

sigo 要设置的信号类型

handler 指定的信号处理函数: SIG_DFL代表缺省方式

SIG_IGN代表忽略信号

进程间通信————信号

                                                                          代码示例

进程间通信————信号

进程间通信————信号

进程间通信————信号