Un processo ha una chiamata 'forchetta' dopo un gestore di segnale è stato registrato [per SIGINT]. cosa succede quando SIGINT viene inviato tramite la riga di comando? se i genitori escono o i figli o entrambi? genitore e figlio sono entrambi in esecuzione infiniti mentre i loop.comportamento di genitore e bambino per un gestore di segnale
8
A
risposta
12
Se si esegue fork
(senza ulteriore exec*
) dopo che un gestore di segnale è stato registrato, lo stesso gestore di segnale verrà utilizzato nei processi padre e figlio. Cioè, se fai qualcosa di diverso da exit
nel tuo gestore SIGINT
, nessuno dei due genitori o figlio uscirà (come è stato inviato SIGINT
è irrilevante qui).
Se si intende una SIGINT
inviato dal terminale (da vintr
carattere che di solito è Ctrl+C
): sarà ricevuto da processi che utilizzano il terminale come terminale di controllo. Cioè, a meno che non si scollega figlio o genitore dal terminale di controllo, entrambi saranno reagire a Ctrl+C
chiamando il gestore SIGINT
.
Problemi correlati
- 1. Ripristina Python SIGINT gestore di segnale
- 2. Gestore segnale SIGKILL
- 3. Come posso ordinare per genitore, quindi bambino?
- 4. Ridimensiona div genitore per adattarsi div bambino
- 5. Accesso ai dati condivisi da un gestore di segnale
- 6. Stampa traccia dello stack da un gestore di segnale
- 7. impedire l'esecuzione del gestore di eventi genitore
- 8. Segnale appropriato per uccidere il server di sviluppo django
- 9. invio segnale da genitore a figlio
- 10. Ottieni costante bambino nel metodo genitore - Ruby
- 11. C++ funzione nel genitore bambino cambio
- 12. Installare POM genitore senza costruire moduli Bambino
- 13. Chiamare una funzione di libreria standard nel gestore di segnale
- 14. Pthreads e segnali Unix: gestori di segnale per thread
- 15. Accesso classe genitore proprietà dal bambino
- 16. chiamare un metodo genitore UIViewController da un bambino UIViewController
- 17. accesso alle proprietà bambino da portata genitore
- 18. C++ 11 uso variabile di condizioni nel gestore di segnale
- 19. Metodo sovraccarico con genitore e categoria bambino come parametro
- 20. percorsi Apigility bambino non ottenere parametri genitore
- 21. Ottieni l'indice del genitore div da bambino
- 22. Android: il bambino specificato ha già un genitore. Devi chiamare removeView() sul genitore del figlio prima
- 23. Perché il mio gestore di segnale non viene chiamato?
- 24. Come impedire al bambino di influenzare il genitore
- 25. Come passare stato con genitore di componenti bambino
- 26. Prevenire Bambino di sparare evento click del genitore
- 27. Il renice su un genitore renice il bambino?
- 28. No cascata inserire per bambino con chiave esterna sul genitore
- 29. Il gestore di segnale non vedrà la variabile globale
- 30. creare div bambino in un div genitore utilizzando jQuery
Ma il gestore di segnale viene registrato prima di fork(), in modo che il bambino non dovrebbe avere la copia. Dopo fork() il bambino deve eseguire le istruzioni seguenti il fork(). la registrazione del gestore di segnale sarà solo nel genitore. – Puneet
@Puneet È * ereditato * dal bambino, qualunque cosa tu pensi di come dovrebbe * essere *. Vedi 'man sigaction'. Cosa c'è di strano in questo? descrittori di file aperti prima di 'fork' sono ereditate troppo. L'unica cosa speciale dei segnali è che i gestori non predefiniti, non-ignore * sono resettati su 'execve' e amici (perché l'indirizzo del gestore non ha senso in un nuovo eseguibile), ma niente di simile accade su' fork'. –
Thank u signore ... dubbio eliminato ... – Puneet