我有一个问题。我正在用C ++语言编写程序。我有一个问题。我需要为我的进程设置信号处理程序。由于信号与系统级别的过程有关,我遇到了问题 我的程序包含几个类。它们连在一起。但在这种情况下并不重要 问题是我需要从我的信号处理程序访问该类的成员和方法。例如,我有一个名为Foo的类,它有一些成员和方法 所以从我的处理程序中我需要调用它的函数并更改成员 我知道编译器应该知道在所有程序执行期间这个类实例都会存在 我试图在另一个类中设置静态成员类Foo实例,但这并没有解决问题 我不知道这样做的正确方法是什么。请解释在这种情况下如何正确实现信号处理。
以下是我的代码示例:
class MyContainer
{
private:
std::vector<Foo> container;
public:
int removeFromContainer(Foo* aFoo) {
// DO some stuff
return RESULT_CODE;
}
int addToContainer(Foo* aFoo) {
// DO some stuff
return RESULT_CODE;
}
};
这是我的主要课程
class MainClass
{
private:
int member;
public:
void mainLoop(char* args) {
signal(SIGCHLD, &signalHandler);
}
};
这是我的信号处理功能
void static signalHandler_child(int p)
{
this->myContainerInstance->addToContainer(new Foo);
}
答案 0 :(得分:0)
静态方法与全局函数没有太大区别。如果需要访问类的实例成员,则信号处理程序应将实例指针/引用作为参数。
像这样的东西
class Foo
{
private:
int member;
public:
static int Handler(Foo* aFoo) { return aFoo->member; }
};