La condizione senza discussioni?
-
27-09-2019 - |
Domanda
Diciamo che ho: sample.c
int main (...) {
char str*;
get s through user input
test(str);
return 0;
}
void test (str) {
copy str to new file
change file permissions on new file
close file
}
Non c'è possibilità di una condizione di competizione qui da quando non ho le discussioni nel mio metodo main (). È vero?
Soluzione
C'è una sorta di condizione di competizione in cui l'utente può scambiare "nuovo file" immediatamente prima di modificare i permessi di "nuovo file". Questo è (era?) Un titolo usato spesso exploit.
Ho appena vedere che Neil Butterworth ha avuto un idea correlata.
Altri suggerimenti
V'è la possibilità di una gara -. Due utenti possono eseguire il programma, allo stesso tempo
Un altro fonti di condizioni di gara sono gli interrupt e segnali. Se si utilizza né allora si verificherà nessuna condizione gara (c'è solo racer )
Ogni volta che si effettua una chiamata di sistema v'è la possibilità di una condizione di competizione. Questo perché il kernel collega tutti i fili sul sistema e consente l'interazione tra i processi di controllo. In questo caso un altro thread sul sistema può accedere allo stesso file come la vostra applicazione.
docs boost :: filesystem hanno buone spiegazioni delle condizioni di gara filesystem che sono applicabili ai file system in genere.