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