gpt4 book ai didi

c++ - 如何在sigaction sa_sigaction中设置类方法?

转载 作者:行者123 更新时间:2023-11-28 04:10:16 26 4
gpt4 key购买 nike

我有一个类,我想将类方法设置为 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::bindreinterpret_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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com