我使用系统函数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
阅读(3370) | 评论(0) | 转发(0) |