Devi installare l'handler del segnale prima di volerlo catturare.
codice:// Compiled an tested with: i686-apple-darwin8-gcc-4.0.1 (GCC) 4.0.1 (Apple Computer, Inc. build 5367) #include <stdio.h> #include <signal.h> static unsigned int sPleaseExit = 0; static void Terminator (int theSignal){ if (SIGINT == theSignal){ sPleaseExit = 1; } } int main (int argc, const char * argv[]) { if (SIG_ERR != signal (SIGINT, Terminator)){ int i; for (i = 0; 0 == sPleaseExit; ++i){ // to exit from this loop, send me SIGINT signal (press CTRL-C) printf ("i = %d;\n", i); } // now do whatever you want: write to file etc. } else{ printf ("signal error;\n"); } printf ("bye bye...\n"); return 0; }

Rispondi quotando