进程通信----信号

信号是软件中断。

信号提供了一种处理异步事件的方法。

每个信号都有一个名字,并且这些名字都是以SIG开头。可以通过包含<signal.h>来调用这些信号。

不存在编号为0的信号。

kill函数,可以向自身发送信号,也可以向其他进程发送信号

raise是向进程自身发送信号

#include <sys/types.h>

#include <signal.h>

int kill(pid_t pid, int signo)

int raise(int signo)


ararm函数,设置时间到时,产生SIGALRM信号

#include <unistd.h>

unsiged int alarm(unsigned int seconds)

seconds:经过了指定的秒数后会产生信号SIGALRM


pause函数使调用进程挂起直至捕捉到一个信号。

#include <unistd.h>

int pause(void)


常用signal函数

函数原型是

void (*signal(int , void (*func)(int))) (int);

由于这个函数看上去比较复杂,所以现在来分解一下

void (*signal)(int);

以上是一个函数指针

void (*signal())(int);

以上用signal()代替signal, 所以可以看成signal这个函数执行之后,返回一个函数指针作为返回值

void (*signal(int, void (*func)(int))) (int)

以上可以看成是signal函数带两个参数,一个是int,一个是void (*func)(int),而signal函数的返回值是一个函数指针, 这个函数指针指向一个带

一个整型参数,并且返回值是void的一个函数。

使用方法

定义一个信号函数

static my_sig(int);

然后这样写:signal(SIGNAL_FOR_YOU, my_sig)

其中SIGNAL_FOR_YOU,是某个信号,这个信号是什么由用户所决定,例如:SIGUSR1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值