Board logo

标题: 第20章20-2例子的问题 [打印本页]

作者: ch4534    时间: 2011-6-18 22:20     标题: 第20章20-2例子的问题

#include "stdafx.h"
#include <exception>
#include <signal.h>
#include <iostream.h>
void SignalHandler(int sig);                                                        //信号处理函数
int main(int argc, char* argv[])
{
        typedef void (*SignalHandlerPointer)(int);                                //函数指针
       
    SignalHandlerPointer previousHandler;                                //定义信号句柄
        //为信号SIGABRT注册信号处理函数
    previousHandler = signal(SIGABRT, SignalHandler);         //注册信号句柄
       
    raise(SIGABRT);                                                                //抛出
        return 0;
}
//异常处理函数
void SignalHandler(int sig)
{
        cout<<"in signalhandler,signal="<<sig<<endl;
}、


typedef void (*SignalHandlerPointer)(int);                                //函数指针
       
    SignalHandlerPointer previousHandler;                                //定义信号句柄
        //为信号SIGABRT注册信号处理函数
    previousHandler = signal(SIGABRT, SignalHandler);         //注册信号句柄

关于红色这部分的代码,我有点看不懂,能否请大能解释一下这段代码的作用(虽然有注释部分,但是还是有点不明白),简单的说,就是为什么要定义“SignalHandlerPointer previousHandler;”这句
,下句“ previousHandler = signal(SIGABRT, SignalHandler); ”作用是什么?谢谢了!!!
作者: fwbook    时间: 2011-6-20 13:06

SignalHandlerPointer previousHandler;   定义一个变量previousHandler,类型是 SignalHandlerPointer。

previousHandler = signal(SIGABRT, SignalHandler);   就是赋值。

从语法角度来说明,估计容易理解一点。
作者: badegg88722    时间: 2011-10-29 20:22

2# fwbook
同问,对这段代码语法理解没问题,但是定义的 previousHandler 变量好像没什么用啊?




欢迎光临 万卷图书 (http://wanjuanchina.net/) Powered by Discuz! 7.0.0