void (*signal(int signo, void (*fun(int))))(int)
int (*p)();
这是一个函数指针, p所指向的函数是一个不带任何参数, 并且返回值为int的一个函数.
int (*fun())();
这个式子与上面式子的区别在于用fun()代替了p,而fun()是一个函数,所以说就可以看成是fun()这个函数执行之后,它的返回值是一个函数指针,这个函数指针(其实就是上面的p)所指向的函数是一个不带任何参数,并且返回值为int的一个函数.所以说对于
void (*signal(int signo, void (*fun)(int)))(int);
就可以看成是signal()函数(它自己是带两个参数,一个为整型,一个为函数指针的函数), 而这个signal()函数的返回值也为一个函数指针,这个函数指针指向一个带一个整型参数,并且返回值为void的一个函数.
signal函数返回的其实是指向以前的信号处理程序的指针,
void (*signal(int signo, void (*fun(int))))(int) 利用signal()函数与alarm()函数,实现在主程序中安一定的时间间隔运行另一个进程
先说一下signal()这个函数.
unix信号signal定义 #include <signal.h> void (*signal(int signo,void(*fun)(int)))(int) 说明:1 返回值是一个 void (*)(int)类型的函数指针
看一个例子!
#include <signal.h>
#include<stdio.h> } main() { }
所以执行结果应该如下:
sleep 1 ...
sleep 2 ... sleep 3 ... sleep 4 ... sleep 5 ... hello sleep 6 ...
下面还有个例子,大家自己去琢磨吧!
#include <unistd.h>
#include <signal.h> #include<stdio.h> #include<stdlib.h> #define static void sig_usr(int); void sig_parse(); int main() { } static void sig_usr(int signo) { |