Chinaunix首页 | 论坛 | 博客
  • 博客访问: 600560
  • 博文数量: 90
  • 博客积分: 5111
  • 博客等级: 大校
  • 技术积分: 928
  • 用 户 组: 普通用户
  • 注册时间: 2007-11-29 16:56
文章存档

2011年(15)

2010年(34)

2009年(19)

2008年(22)

我的朋友

分类: LINUX

2008-06-04 11:15:24

我使用系统函数signal()捕获信息,父进程使用kill()函数向子进程发送软中断信号。呵呵~~一个小实验,贴出来帮助和我一样的出现学者,从而了解信号通信方式

介绍:

信号实现是操作系统用来通知应用进程有事件发生的一种机制,信号可以由一个进程产生,从而使另一个进程中断,并通过执行针对该特定信号预定义的代码,有选择的捕获这个信号。

在Linux中signal函数是比较复杂的一个,其定义原型如下:
void (*signal(int signo,void (*func)(int))) (int)
这个函数中,最外层的函数体
void (* XXX )(int)表明是一个指针,指向一个函数XXX的指针,XXX所代表的函数需要一个int型的参数,返回void
signal(int signo, void(*func)(int))是signal函数的主体.
需要两个参数int型的signo以及一个指向函数的函数.
void (*func)(int).
正是由于其复杂性,在[Plauger 1992]用typedef来对其进行简化
typedef void Sigfuc(int);//这里可以看成一个返回值 .
再对signal函数进行简化就是这样的了
Sigfunc *signal(int,Sigfuc *);
我们在使用时signal,第一个参数代表信号,第二个参数代表接收到这个参数时所进行的操作。
'E&\TlP w0
4H
阅读(3323) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~