Forum: PC-Programmierung C++ win32 Applikation beenden funktioniert nicht


von win32_user (Gast)


Lesenswert?

Hallo,

in einer win32 C++ Applikation wird in der Endlosschleife While(1) die 
Funktion Sleep aufgerufen.
Das Beenden der Applikation funktioniert nicht.
1
void signalHandler( int signum )
2
{
3
      printf("Interrupt signal received - signum = %d\n");
4
5
      // cleanup and close up stuff here  
6
      // terminate program  
7
8
  exit(signum);
9
}
10
11
12
int main(void)
13
{
14
  signal(SIGINT, signalHandler);
15
16
  while(1)
17
  {
18
    Sleep(100);
19
  }
20
}
Was müsste ich tun, damit die Applikation auch beenden werden kann?

: Bearbeitet durch User
von Peter II (Gast)


Lesenswert?

win32_user schrieb:
> Was müsste ich tun, damit die Applikation auch beenden werden kann?

http://msdn.microsoft.com/de-de/library/windows/desktop/ms685049(v=vs.85).aspx

von win32_user (Gast)


Lesenswert?

Hallo Peter,

vielen Dank für deine schnelle Antwort. Leider hilft mir dies auch nicht 
weiter. Das Programm wird zwar in der Konsole gestoppt allerdings komm 
ich nicht mehr zur Konsoleneingabe zurück. Das Programm hängt.

von win32_user (Gast)


Lesenswert?

Sobald ich das Sleep in der Endlosschleife entferne, dann lässt sich das 
Programm beenden und ich komme auch wieder zur Konsoleneingabe zurück.

von Thomas M. (thomaswm)


Lesenswert?

Was soll denn das "sleep" machen? Prozessorlast senken?

Das sleep(); ist blockierend, daher wird wohl deine Eingabe nicht 
verarbeitet?

von Reinhard (gotbread)


Lesenswert?

Ist das eine Konsolenanwendung?

Wenn ja müsste der Konsolenhandler auch trotz Sleep dein
Interrupt verarbeiten.

Allerdings ist sowas meiner Meinung nach auf Win32
schlechter Stil. Dann lieber eine vernünftige
Windowsanwendung die ein Fenster erstellt und auch
keine Sleep-tricks nutzen muss.

von Udo S. (urschmitt)


Lesenswert?

win32_user schrieb:
> printf("Interrupt signal received - signum = %d\n");

Wo ist eigentlich die Variable für %d?

von Purzel H. (hacky)


Lesenswert?

Sleep() ist sowieso ganz schlechter Stil

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Siebzehn mal Fuenfzehn schrieb:
> Sleep() ist sowieso ganz schlechter Stil

Und Variablennamen in irgendeiner irgendjemandem bekannten Sprache auch.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.