c++ - 如何在 sigaction sa_sigaction 中设置类方法?
问题描述
我有一个类,我想将类方法设置为 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
withreinterpret_cast
但没有工作。
那么,如何设置sa_sigaction
类方法呢?
注意:它应该是类方法,而不是静态方法或函数。
解决方案
如果你看一下 的声明sigaction::sa_sigaction
,你会发现它是void (*)(int,siginfo_t*,void*)
。这是指向函数的指针。
注意:它应该是类方法,而不是静态方法或函数。
不可能,因为指向函数的指针不能指向非静态成员函数。您必须将指向非成员或静态成员函数的指针作为信号处理程序传递。如果您愿意,该函数可以反过来调用非静态成员函数(只要该函数是异步信号安全的)。
我需要使用一些类属性
确保这些属性是 type volatile sig_atomic_t
。
推荐阅读
- mysql - 从mysql中的TIMESTAMP获取错误的时区时间
- amazon-web-services - 使用托管在隧道私有 VPC 中的 lambda 从默认 VPC 访问本地服务
- formatting - Markdown 文件中的虚假链接表示
- android - 如何用图像更改 Slider 的拇指 Material Component Android?
- excel - 组合框用户窗体中 Listindex 的 If Then 语句
- sql - 如何根据我选择的数据进行计数(varchar)
- rxjs - 如何按顺序运行多个可观察对象
- amazon-web-services - s3 在创建多方请求时是否覆盖现有文件
- java - LocalTime 类是最终类,但没有给出构造函数,为什么?
- validation - 在保存之前针对另一个对象中的记录验证之前的记录 - Salesforce