[gelöst] Signalbehandlung in C++

Alles rund um die Programmierung mit Qt
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: [gelöst] Signalbehandlung in C++

Beitrag von franzf »

signal ist halt nur C, das geht nur mit Instanzungebundenen Funktionen. Wenn du eine Memberfunktion aufrufen willst, musst du dem signal-Handler den Zugriff auf diese Instanz gestatten: Entweder globale Variable oder irgendwie mit Singleton. Im Signal-Handler kannst du dann beliebige Funktionen aufrufen.

Im Handler selber würde ich nicht allzu viel machen. Eine Extratour in der Eventloop würde ich gar nicht versuchen. Ich weiß nicht, ob dir das OS dazu Zeit lässt, oder bei zu langem Warten einfach den Prozess abwürgt ^^ Hab aber mit signal-Handlern noch nicht wirklich viel gemacht.
Config speichern usw. sollte aber problemlos gehen.
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Re: [gelöst] Signalbehandlung in C++

Beitrag von pfid »

Du könntest einen statischen Pointer auf deine Applikations-Klasse speichern, der aus dem Signal-Handler heraus verwendet werden kann.

Code: Alles auswählen

MyApplication* MyApplication::instance= 0;

MyApplication::MyApplication()
      : QMainWindow()
{
   MyApplication::instance = this;

...


void signal_handler(int signal)
{
   MyApplication::instance->doExit();
}

[edit] In meiner Konsolenanwendung hab ich:

Code: Alles auswählen

void downF(int /*signal*/)
{
   QCoreApplication::quit();
}
Alex66955
Beiträge: 56
Registriert: 23. September 2009 14:48

Re: [gelöst] Signalbehandlung in C++

Beitrag von Alex66955 »

So wie es aussieht gibt mir das System nicht genügend zeit alle Threads ordnungsgemäß zu beenden. Also hat sich erstmal erledigt

Gruß
Alex
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: [gelöst] Signalbehandlung in C++

Beitrag von franzf »

Aber du wartest schon aktiv, bis alle Threads aus sind? Nicht dass du ein "stop"-Flag im Thread setzt, und deinen Signal-Handler auslaufen lässt ;)
Alex66955
Beiträge: 56
Registriert: 23. September 2009 14:48

Re: [gelöst] Signalbehandlung in C++

Beitrag von Alex66955 »

Das könnte natürlich auch der Grund sein xD. Ich habe aber vorerst den Funktionsumfang meiner Applikation eingeschränkt... komm vlt. drauf zurück


Gruß
Alex
-=Freaky=-
Beiträge: 503
Registriert: 29. Dezember 2006 22:54
Wohnort: HL

Re: [gelöst] Signalbehandlung in C++

Beitrag von -=Freaky=- »

// edit: zu spaet ....
Antworten