У меня есть одна проблема. Я пишу свою программу на языке C++. У меня есть одна проблема. Мне нужно установить обработчик сигнала для моего процесса. Поскольку сигнал связан с процессом на системном уровне, я столкнулся с проблемой.
Моя программа состоит из нескольких классов. Они связаны вместе. Но в данном случае это не имеет значения.
Проблема в том, что мне нужен доступ к членам и методам класса из моего обработчика сигналов. Например, у меня есть класс с именем Foo, у него есть некоторые члены и методы.
Итак, из моего обработчика мне нужно вызвать его функцию и изменить члены.
Я понимаю, что компилятор должен знать, что экземпляры этого класса будут существовать во время все выполнение программы.
Я попытался установить экземпляр Foo статического класса-члена в другой класс, но это не решило проблему.
Я понятия не имею, как правильно это сделать. Объясните, пожалуйста, как правильно реализовать обработку сигналов в таком случае.
Вот пример моего кода:
class MyContainer
{
private:
std::vector<Foo> container;
public:
int removeFromContainer(Foo* aFoo) {
// DO some stuff
return RESULT_CODE;
}
int addToContainer(Foo* aFoo) {
// DO some stuff
return RESULT_CODE;
}
};
Вот мой основной класс
class MainClass
{
private:
int member;
public:
void mainLoop(char* args) {
signal(SIGCHLD, &signalHandler);
}
};
Вот моя функция для обработки сигналов
void static signalHandler_child(int p)
{
this->myContainerInstance->addToContainer(new Foo);
}