QNA > C > Cos'è Signal-Safe?

Cos'è signal-safe?

Definizione di funzione async-signal safe(Da: BB. Definizioni - Secure Coding - CERT Secure Coding Standards)

Una funzione è asincrona-safe, o asincrona-signal safe, se può essere chiamata in modo sicuro e senza effetti collaterali dall'interno di un contesto gestore di segnali. Cioè, deve poter essere interrotta in qualsiasi punto per essere eseguita linearmente fuori sequenza senza causare uno stato incoerente. Deve anche funzionare correttamente quando i dati globali potrebbero essere essi stessi in uno stato incoerente. Alcune operazioni asincrone sicure sono elencate qui:

  • Chiamare la funzione signal() per reinstallare un gestore di segnali
  • Modificare incondizionatamente una variabile volatile sig_atomic_t (poiché la modifica a questo tipo è atomica)
  • Chiamare la funzione _Exit() per terminare immediatamente l'esecuzione del programma
  • Invocare una funzione asincrona-safe, come specificato dall'implementazione

Poche funzioni sono portabilmente asincrone-safe.


Nota: Leggete cosa significa "effetti collaterali" seguendo il link

Da questo credo che questa funzione detenga la chiave per le funzioni async-signal safe

  • Funzione rientrante senza usare primitive di sincronizzazione (Nota: rientrante per thread safe e rientrante per gestori di segnali sono diversi. Capisco che re-entrant non ha nulla a che fare con la funzione async-signal-safe, ma sembra che sia un elemento di base per essa)
  • Per bloccare la generazione del segnale al momento giusto (leggi al momento sensibile/critico). Non vogliamo che i nostri gestori di segnali generino segnali e diano un comportamento indefinito.


Idealmente questa funzione dovrebbe fare il meno possibile e fino a un certo punto impostare/riimpostare i flag per i vostri bisogni speciali (cioè cambiare il flusso/uscita del programma)

Si prega di fare riferimento al link/fonte:
http://stackoverflow.com/questions/8493095/what-constitutes-asynchronous-safeness
Gestori di segnali e sicurezza asincrona
Tutto sui segnali Linux (Sezione: funzioni Signal-Safe)

Di Audris

Come possiamo dire che l'LG K42 è lo smartphone più resistente nel segmento budget? :: Qual è la differenza tra acrilico e plastica?
Link utili