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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top