C++ 如何从静态方法(信号处理程序)访问类成员和方法
我有一个问题。我正在用C++语言编写我的程序。我有一个问题。我需要为我的进程设置信号处理程序。由于信号与系统级的过程有关,因此我遇到了这个问题。 我的课程由几节课组成。它们是连接在一起的。但在这种情况下,这并不重要。 问题是我需要从信号处理程序访问类的成员和方法。例如,我有一个名为Foo的类,它有一些成员和方法。 因此,我需要从我的处理程序调用它的函数并更改成员。 我知道编译器应该知道这个类实例在所有程序执行期间都会存在。 我曾尝试在另一个类中设置静态成员类Foo实例,但这并没有解决问题。 我不知道这样做的正确方法是什么。请说明在这种情况下如何正确执行信号处理 下面是我的代码示例:C++ 如何从静态方法(信号处理程序)访问类成员和方法,c++,unix,signals,signal-handling,C++,Unix,Signals,Signal Handling,我有一个问题。我正在用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;
}
};
这是我的信号处理函数
void static signalHandler_child(int p)
{
this->myContainerInstance->addToContainer(new Foo);
}
静态方法与全局函数没有太大区别。如果需要访问类的实例成员,则信号处理程序应将实例指针/引用作为参数 像这样的
class Foo
{
private:
int member;
public:
static int Handler(Foo* aFoo) { return aFoo->member; }
};
class Foo
{
private:
int member;
public:
static int Handler(Foo* aFoo) { return aFoo->member; }
};