vlastni osetreni signalu SIGINT

Jan Markus markus.jan na seznam.cz
Čtvrtek Říjen 20 20:46:38 CEST 2005


Dobry den,

mam tady takovy jednoduchy programek co cte vstup z klavesnice a vypisuje ho 
na stdout. Chtel jsem jeho vystup presmerovat do souboru a rovnou zapakovat 
pomoci:

 ./uberkey | gzip > log.gz  #nebo
 ./uberkey | bzip2 > log.bz2

ale v obou pripadech (po ukonceni programu pomoci Ctrl+C) jsou log soubory 
prazdne. Napadlo me, ze ty pakovaci programy mozna ocekavaji EOF, a tak 
experimentuji s vlastnim osetrenim signalu SIGINT, aby jim ten EOF dodatecne 
poslal:

---------------------------------------
#include <stdio.h>
#include <signal.h>

void clean_exit(int i) { 
  printf("heeeelp! murdeeeer! \n");
  return EOF;
  fflush(stdout);
  _exit(0);
  /* a tak podobne */
}

int main(void) {
  [...]
  signal(SIGINT, clean_exit);
}
---------------------------------------

Ale porad nic... uz kolikaty den se utapim v
   http://groups.google.com/group/comp.lang.c
Je tam spousta vselijakych prikladu, ale nic mi nezabira.

Prosim odpustte diletantovi ;) Tusite nekdo co delam spatne?

(mam fedoru core 4 se vsemi updaty, gcc-4.0.1-4)

Diky za vas cas,
-markoska

PS: Parametry funkce: 'void clean_exit(int i)' jsou takoveho typu na ktere si 
kompilator konecne prestal stezovat. Pak se mu ale samozrejme nelibi ten 
'return EOF' kvuli tomu 'void'u


Další informace o konferenci Linux