首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

signal 函数返回值的疑点

2013-01-06 
signal 函数返回值的疑问signal 函数的返回值man上说的是成功返回之前安装的函数指针,错误是SIG_ERR我写了

signal 函数返回值的疑问
signal 函数的返回值man上说的是成功返回之前安装的函数指针,错误是SIG_ERR
我写了个小函数测试了一下,函数如下:
#include <stdio.h>
#include <signal.h>

dypedef void (*funtype)(int);
funtype sys_fun;
void fun(int sig){
    printf("%d\n",sig);
    sys_fun(sig);
}

int
main(int argc,const char **argv){
    sys_fun = signal(SIGINT,fun);
    while(1);
    return 0;
}

这个函数没什么意义,就是当我执行的时候函数会死循环,当我按下键盘上的Ctrl + C的时候会向进程发送SIGINT信号,进程应该打印SIGINT宏对应的整形,也就是2,之后还是在死循环的。合适我试了试,它能打印一个2,可是之后就直接段错误了,这是为什么呢,等大神指教啊。
[解决办法]
之前看错了

sys_fun = signal(SIGINT,fun);
这个返回默认的系统处理函数SIG_DFL
SIG_DFL 定义为
#define SIG_DFL (void (*)())0

所以错误了,不应该这么写

热点排行
Bad Request.