2012-10-18 21 views
8

Sto scrivendo un semplice programma in cui i processi padre e figlio vengono alternativamente stampati in un file. Sono riuscito a farlo usando segnali definiti dall'utente. Ora voglio gestire il segnale SIGINT. Una volta ricevuto il numero ctrl-c, il genitore deve inviare un segnale di terminazione al figlio, il bambino dovrebbe quindi terminare e infine il genitore dovrebbe terminare.Ignora il segnale SIGINT nel processo figlio

La mia domanda è, per farlo funzionare correttamente, devo prendere il segnale SIGINT SOLO dal genitore e IGNORARE dal bambino. È giusto? Se sì qualche suggerimento su come fare questo?

+0

Si possono trovare questo interessante: http://www.linuxprogrammingblog.com/all-about-linux-signals –

risposta

14

chiamata:

signal(SIGINT, SIG_IGN); 

dal processo figlio che renderà il processo figlio ignorare il segnale SIGINT. Da man signal:

Se la disposizione è impostata su SIG_IGN, il segnale viene ignorato.

+0

Ok So che l'azione SIG_IGN, ma voglio solo il bambino di ignorare che e quando le catture genitore il segnale, termina il bambino. – SpyrosR

+0

@SpyrosR, quindi chiama il bambino? – hmjd

+0

Sì. Ho impostato due funzioni di gestione, una per il genitore per l'acquisizione del segnale e l'invio del segnale SITERM al bambino e una per il bambino per ignorare il segnale, ma non posso farlo funzionare.Se per esempio premi ctrl-c mentre il bambino sta "lavorando "chiama la funzione handle figlio ma chiama anche la funzione handle parent per il segnale SIGINT. – SpyrosR

Problemi correlati