我有一个类,我想将类方法设置为 sigaction 的参数,因为我需要使用一些类属性:
class MyClass {
void action(int sn, siginfo_t* t, void* ctx) {
...
}
};
int main() {
MyClass c;
struct sigaction sig_action;
sig_action.sa_sigaction = c.action; // ERROR!
}
即使我尝试将 std::bind
与 reinterpret_cast
一起使用,但没有成功。
那么,我如何设置 sa_sigaction
一个类方法呢?
注意:它应该是一个类方法,而不是静态方法或函数。
最佳答案
如果你看一下 sigaction::sa_sigaction
的声明,你会发现它是 void (*)(int,siginfo_t*,void*)
.这是指向函数的指针。
NOTE: it SHOULD be a class method and not a static method or a function.
不可能,因为指向函数的指针不能指向非静态成员函数。您必须将指针传递给非成员函数或静态成员函数作为信号处理程序。如果您愿意,该函数可以依次调用非静态成员函数(只要该函数是异步信号安全的)。
I need to use some class attributes
确保这些属性的类型为 volatile sig_atomic_t
。
关于c++ - 如何在sigaction sa_sigaction中设置类方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57960577/