当前位置: 技术问答>linux和unix
信号捕捉,C++
来源: 互联网 发布时间:2015-12-29
本文导语: linux真是C语言的天下,我发现连C++都用起来不太爽! 现在有个问题,郁闷几天,不知在CSDN上能解决不? 关于信息处理函数, 它必须是全局且静态函数,能不是类的成员函数呢? C代码如下: static struct sigaction s...
linux真是C语言的天下,我发现连C++都用起来不太爽!
现在有个问题,郁闷几天,不知在CSDN上能解决不?
关于信息处理函数,
它必须是全局且静态函数,能不是类的成员函数呢?
C代码如下:
static struct sigaction sigaction_io;
static void signal_handler_revdata(int status)
{
//在此处做我的事
}
static int setsig()
{
sigaction_io.sa_handler = signal_handler_revdata;
sigaction (SIGUSR1, &sigaction_io, NULL);
return 0;
}
而我用C++,我现在希望signal_handler_revdata必須是类的成员函数,能实现吗?
在VC中,如果有类似的情况,只要声明为static就行了,但linux就是不行,硬不能是类的成员!烦燥,不知怎么解决这个问题?
大家帮我想想办法,急啊!
现在有个问题,郁闷几天,不知在CSDN上能解决不?
关于信息处理函数,
它必须是全局且静态函数,能不是类的成员函数呢?
C代码如下:
static struct sigaction sigaction_io;
static void signal_handler_revdata(int status)
{
//在此处做我的事
}
static int setsig()
{
sigaction_io.sa_handler = signal_handler_revdata;
sigaction (SIGUSR1, &sigaction_io, NULL);
return 0;
}
而我用C++,我现在希望signal_handler_revdata必須是类的成员函数,能实现吗?
在VC中,如果有类似的情况,只要声明为static就行了,但linux就是不行,硬不能是类的成员!烦燥,不知怎么解决这个问题?
大家帮我想想办法,急啊!
|
可以这样尝试一下:
声明一个该类的全局实例,在信号处理过程中调用此实例的相关过程。
另外也可一这样,在类中设置一些输出相关变量的方法,和一些设置相关变量的方法。在处理过程中调用他们以获得相关变量,或者设置他们。
声明一个该类的全局实例,在信号处理过程中调用此实例的相关过程。
另外也可一这样,在类中设置一些输出相关变量的方法,和一些设置相关变量的方法。在处理过程中调用他们以获得相关变量,或者设置他们。
|
awjx(啦啦啦) ( ) 信誉:100 Blog
兄弟,经你一提醒,我现在解决了,不知你是这样想的不?
在外面声明全局:FrmMain *pMain;
然后在类的构造函数中 pMain = this;
然后就可以随心所欲地使用pMain了。
虽然实现我的功能了,但严重破坏了面向对象的宗旨!
-------------------------------------------
这个是常见的传递方式,但如果有多个实例的时候,就充掉了,要用数组来解决了。
兄弟,经你一提醒,我现在解决了,不知你是这样想的不?
在外面声明全局:FrmMain *pMain;
然后在类的构造函数中 pMain = this;
然后就可以随心所欲地使用pMain了。
虽然实现我的功能了,但严重破坏了面向对象的宗旨!
-------------------------------------------
这个是常见的传递方式,但如果有多个实例的时候,就充掉了,要用数组来解决了。