Esiste un modo per eseguire il dump di un buffer sul file atomicamente?Scrittura atomica su file su linux
Per "atomicamente" intendo: se per esempio qualcuno termina la mia domanda durante la scrittura, mi piacerebbe avere un file in uno stato precedente o successivo alla scrittura, ma non in uno stato intermedio corrotto.
Se la risposta è "no", probabilmente si potrebbe fare con buffer molto piccoli? Ad esempio, posso scaricare 2 variabili int32_t conseguenti con un singolo 8 byte fwrite (su piattaforma x64), ed essere sicuro che entrambi gli int32s vengano scaricati, o nessuno di essi, ma non solo uno di essi?
Penso che sia necessario esaminare "Segnali" unix. I segnali di trapping ti permetteranno di sapere quando la tua app viene chiusa. L'unica cosa che non puoi rilevare è un 'kill -9' che abbatte il tuo programma senza emettere un segnale. –
Una soluzione normale consiste nel lavorare su una copia del file e scambiarli atomicamente alla fine. –
D'accordo con @MarcGlisse, l'unico modo garantito per prevenire la corruzione è scrivere un nuovo file e spostare il nuovo file su quello vecchio quando il nome è atomico. –