Я пытаюсь получить обработчик сигнала для работы на C++ и не могу понять, как использовать некоторые свойства класса.получить свойства объекта из обработчика posix-сигнала в C++
Обработчик сигнала запускается, когда принимается сигнал SIGIO, и мне нужно проверить, подходит ли он для правильного сокета.
Все, что мне нужно сделать, это иметь доступ к приватным socket_
и общественным 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
жаловался, что его не было в области.
Любые указатели?
Не связано с вашей проблемой, но обработчики сигналов не обязательно должны быть 'extern 'C". –