Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Intercettare CTRL-C

3 views
Skip to first unread message

DucaBlu

unread,
Aug 29, 2004, 5:44:01 AM8/29/04
to
Buona domenica a tutti, ho il seguente problema da risolvere, ho un
programma che scambia dati con un altro via socket tramite un tunnel
(un altro processo). Vorrei che alla ricezione di un CTRL-C
dell'utente il MIO programma PRIMA di morire uccida l'altro processo!
Come posso fare in maniera non troppo complicata? Grazie per l'aiuto!
Max

Angelo Paolitto

unread,
Aug 29, 2004, 8:25:08 AM8/29/04
to
"DucaBlu" <nos...@spam.com> wrote in message
news:pa93j0dradrfq187u...@4ax.com

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

void catchCtrlC(int pSig)
{
// Potrebbe non essere necessario, dipende dal S.O.
// ------------------------------------------------
signal(SIGINT, catchCtrlC);

/* Codice per la gestione del Ctrl-C */

}

int main(void)
{
// Installazione del gestore dei segnali
// -------------------------------------
signal(SIGINT, catchCtrlC);


/* Codice del programma */


return 0;
}

Il codice non e' esente da race condition, ma la gestione
degli interrupt dipende dal S.O.

HTH

C:\>iao Angelo


--
Posted via Mailgate.ORG Server - http://www.Mailgate.ORG

ErBaitch

unread,
Aug 29, 2004, 10:38:19 AM8/29/04
to

signal penso sia adatta a te:
--------------
#include <signal.h>
typedef void (*sighandler_t)(int);
sighandler_t signal(int signum, sighandler_t handler);
--------------

intercetta i segnali che sono inviati al processo.

se stai programmando sotto linux, dai un bel:
man signal

ciao

--
Er Baitch
http://baitch.altervista.org/
-- Fortune of the day --
"I'd love to go out with you, but I never go out on days that end in
`Y.'"

DucaBlu

unread,
Aug 30, 2004, 4:32:36 PM8/30/04
to
On Sun, 29 Aug 2004 14:38:19 GMT, ErBaitch
<er.baitch...@tiscali.it> wrote:

>se stai programmando sotto linux, dai un bel:
>man signal

PURTROPPO lavoro sotto win :-(

Enrico Franchi

unread,
Aug 30, 2004, 5:59:58 PM8/30/04
to
DucaBlu wrote:

> PURTROPPO lavoro sotto win :-(

Il tuo ambiente avra` pure un sistema di documentazione :))

Angelo Paolitto

unread,
Aug 31, 2004, 3:22:18 AM8/31/04
to
"DucaBlu" <nos...@spam.com> wrote in message
news:im37j01f6pb4d6o5m...@4ax.com

> >se stai programmando sotto linux, dai un bel:
> >man signal
> PURTROPPO lavoro sotto win :-(

signal e' una funzione standard del "C", la sua implementazione e
il suo comportamento dipendono dal S.O.

SIGINT

e' uno dei segnali standard, e in una applicazione console corrisponde
a CTRL+C.

Se la tua applicazione e' a finestre, ho paura che la tecnica descritta
non funzioni.

In ogni caso in

signal.h

la signal() e' gia' prototipata, pertanto


#include <signal.h>
typedef void (*sighandler_t)(int);
sighandler_t signal(int signum, sighandler_t handler);


nella migliore delle ipotesi e' inutile.

0 new messages