2010-03-17 5 views

risposta

10

Questo è spiegato nel GNU LibC documentation.

Se si chiama una funzione nel gestore, accertarsi che sia rientranza rispetto ai segnali, oppure assicurarsi che il segnale non possa interrompere una chiamata a una funzione correlata.

E nel caso, ecco il Wikipedia page sulle funzioni di rientro.

Un programma o una routine di computer è descritto come rientrante se può essere richiamato in modo sicuro prima che la sua precedente chiamata sia stata completata (vale a dire che può essere eseguita in modo sicuro contemporaneamente).

0

Perché la funzione di libreria potrebbe non essere rientrante.

1

Non solo i problemi di re-entrancy, a seconda del servizio dei servizi, si desidera anche evitare chiamate involontarie a malloc() (ad esempio asprintf()) e altre espansioni variadiche (ad esempio printf()).

1

è tutto funzionando benissimo e cose, fino a quando si esegue in alcuni bug misteriosi che sono totalmente perse le tracce :)

man 7 signal vi darà un elenco di chiamate di sistema che sono sicuri per chiamare da un gestore di segnale. È descritto anche in POSIX.