gpt4 book ai didi

c++ - 从 C++ 中的 posix 信号处理程序获取对象属性

转载 作者:太空狗 更新时间:2023-10-29 21:48:22 29 4
gpt4 key购买 nike

我正在尝试让信号处理程序在 C++ 中工作,但无法弄清楚如何使用某些类属性。

信号处理程序在收到 SIGIO 信号时触发,我需要检查它是否用于正确的套接字。

我需要做的就是能够访问私有(private) socket_ 和公共(public) received()

namespace sigh {

template<typename SomeType>
class WorkWithSignals
{
public:
void received( unsigned char* data, size_t len, unsigned int from );

private:
static void sigio_handler ( int sig, siginfo_t* siginfo, void* empty );
int socket_;
};

extern "C" {
void sigio_handler ( int sig, siginfo_t* siginfo, void* empty ) {
if (siginfo->si_fd == ***socket_*** )
***received*** ();
}
}

}

除此之外,我尝试在 sigio_handler 定义之前定义一个静态结构变量,将其填充到 sigio_handler 之后定义的类构造函数中,但是 sigio_handler 提示它不在范围内。

有什么建议吗?

最佳答案

您不能从静态方法访问成员变量(只是没有对象)。你可以让你的socket_也是一个静态变量,并通过 WorkWithSignals<...>::socket_ 引用它.

关于c++ - 从 C++ 中的 posix 信号处理程序获取对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10876904/

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