Signal Handler in C, obwohl Schleife abgebrochen trotzdem noch output
-
Hallo allerseits,
ich hab folgendes Programm mit einem Signal Handler in C:#include <stdio.h> #include <stdlib.h> #include <signal.h> void sighandler(int sig) { printf("Recieved signal %d\n", sig); fflush(stdout); exit(EXIT_SUCCESS); } int main(void) { int n = 0; signal(SIGINT, sighandler); n = 0; while(1) { printf("Hallo %d\n", n); n++; } return EXIT_SUCCESS; }
Wenn ich das Programm starte, dann wird wie erwartet das Hallo + Zahl ausgegeben. Bei drücken der Tasten Strg + C wird auch wie erwartet in die sighandler funktion gesprungen und das Programm beendet. Allerdings werden nach "Recieved Signal ..." noch ein bis zwei weitere "Hallo + zahl" ausgegeben.
Und ich frage mich jetzt warum. Immerhin wird das programm ja beendet
gruß seux
-
Hmm. Ich kenne mich damit nicht aus, aber das sieht danach aus dass
signal()
einen Thread startet.P.S.: Falsches Forum
-
Mach halt das
fflush(stdout);
am Anfang des Signalhandlers.@Sone
Ne, signal startet keinen neuen Thread.
-
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum C (C89 und C99) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.