我试图让信号处理程序在 C++ 中工作,但不知道如何使用某些类属性。
信号处理程序在收到 SIGIO 信号时触发,我需要检查它是否用于正确的套接字。
我需要做的就是能够访问 privatesocket_
和 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
抱怨它不在范围内。
任何指针?