Ich habe Probleme mit signal Funktion, ich brauche, dass der zweite ParameterSignal innerhalb Klasse Handhabung
signal (SIGINT, myClass_function);
aber soweit ich weiß, eine Funktion meiner Klasse aufrufen muss es statische nichtig. Und so kann ich nicht die gleiche Instanz von meinem Objekt Zugriff auf die Variablen zugreifen, die ich brauche
foo.h
class Foo {
public:
std::vector<my_struct> vm = std::vector<my_struct>(50);
static void myClass_function(int parameter) {
// handling signal here
// i need to access vm here
}
};
foo.cpp
void Foo::something() {
// call signal
signal(SIGINT, myClass_function);
}
wenn Benutzer drücken Strg + C, müssen alle Daten von Vektor VM sauber sein. Keine Möglichkeit, das zu tun? kann mir jemand helfen?
Helfen Sie mit was? Ihr Verständnis davon, wie ein Signal-Handler funktioniert, ist absolut richtig. Der Signalhandler wird asynchron aufgerufen, wenn der Prozess ein Signal empfängt. Das ist es. Nichts mehr. Nicht weniger. Der Signalhandler erhält nicht nur irgendeinen anderen Parameter, er kann auch keine Bibliotheksfunktion oder einen Code aufrufen, der nicht wiedereintritt. Der gesamte Signalhandler hat, um damit zu arbeiten, dass er als Ergebnis eines Signals aufgerufen wurde. Es ist Aufgabe des Signal-Handlers herauszufinden, was er benötigt und wo er herkommt. –
Und wenn es ein Signal gibt, welches "Foo" 'vm' sollte vom Signal-Handler verwendet werden? – md5i
Überprüfen Sie die Antwort von Luc Touraille in diesem Beitrag: [Ist es möglich, Signal innerhalb einer C++ - Klasse zu verwenden?] (Http://stackoverflow.com/questions/343219/is-it-possible-to-use-signal-inside -ak-Klasse). – chema989