PDA

View Full Version : [linux] Catturare ctrl+C


ilsensine
18-09-2002, 09:45
Mi sono capitati sottomano vari articoli che spiegano come si fa, e visto che non mi è mai servito non li ho mai letti. Ora che mi serve, ovviamente non trovo più nulla :D
Qualcuno sa come fare?

cionci
18-09-2002, 11:34
Orco cane...lo sapevo...ora non me lo ricordo...
Azz...

Devi mettere una qualche funzione di callback che te lo gestisce...azzarola non me lo ricordo...

ilsensine
18-09-2002, 12:04
Murphy continua a divertirsi alle mie spalle, vedo :D

cionci
18-09-2002, 13:35
Guarda un po' sui segnali...dovresti catturare SIG_TERM...

ilsensine
18-09-2002, 14:14
Già lo catturo...

ilsensine
18-09-2002, 14:22
Ok risolto.
Non SIGTERM, ma SIGINT :D

cionci
18-09-2002, 15:12
Ah...ok...

Già che ci sei...come si faceva ?

ilsensine
18-09-2002, 15:45
Ci sono più modi, io ho usato questo (nb da compilare con -D_GNU_SOURCE):

void sighandler(int sig, siginfo_t *info, void *data) {
fprintf(stderr, "Segnale %d\n", sig);
}

int main() {
struct sigaction act;
act.sa_sigaction = sighandler;
sigemptyset(&act.sa_mask);
act.sa_flags = SA_SIGINFO;
sigaction(SIGINT, &act, NULL);

...
}

Vedi anche man sigaction
Ciao

cionci
18-09-2002, 15:55
Mi sa che era un altro metodo quello che avevo usato io...

Thanks :)

ilsensine
18-09-2002, 16:21
Sì si può usare anche signal(), che è molto più sbrigativa.

cionci
18-09-2002, 16:29
Originariamente inviato da ilsensine
[B]Sì si può usare anche signal(), che è molto più sbrigativa.
Mi sa che era proprio signal() :)

ilsensine
25-09-2002, 13:10
Questa è più difficile: catturare crtl+z.
ctrl+z invia un SIGSTOP, che non può essere bloccato. So però che si può cambiare l'azione di ctrl+z (al pari di come si può cambiare l'azione di ctrl+c - è questo che avevo letto, anche se alla fine intercettare SIGINT mi va ugualmente bene).
Sai nulla in proposito?

cionci
25-09-2002, 15:12
No, mi dispiace... :(

ilsensine
25-09-2002, 16:57
Ho paura che tocca litigare con termios.h...

cionci
25-09-2002, 19:23
Avevo scritto una cacchiata :)

mjordan
27-09-2002, 02:38
Originariamente inviato da ilsensine
[B]Ho paura che tocca litigare con termios.h...

Comunque se non hai particolari esigenze di apprendimento e potresti evitare di "ammattirti" con segnali vari, puoi usare, sotto Linux, la libreria readline che ha apposite funzioni per il rimappaggio delle sequenze di tasti :D :D :D

ilsensine
27-09-2002, 13:42
Ho risolto il problema semplicemente...ignorandolo :D
L'applicazione che sto facendo deve girare per lo piò come demone, quindi chissene della tastiera ;)

mjordan
27-09-2002, 21:07
Originariamente inviato da ilsensine
[B]Ho risolto il problema semplicemente...ignorandolo :D
L'applicazione che sto facendo deve girare per lo piò come demone, quindi chissene della tastiera ;)

:D :D :D