Une condition de course est un comportement anormal causé par une dépendance inattendue sur le séquencement relatif des évènements. En d'autres mots, un programmeur a supposé à tort qu'un évènement particulier se passerait avant un autre.
Quelques causes habituelles de conditions de course sont les
signaux, les vérifications d'accès et les fichiers ouverts.
Les signaux sont des évènements asynchrones par nature aussi un soin
particulier doit être pris pour les utiliser.
Vérifier les accès avec access(2)
puis
open(2)
n'est clairement pas atomique.
Les utilisateurs peuvent déplacer des fichiers entre les deux appels.
Les applications privilégiées devraient plutôt faire un appel à
seteuid()
puis appeler open()
directement. Dans le même esprit, une application devrait toujours règler
un umask correct avant un appel à open()
pour
prévenir le besoin d'appels non valides à chmod()
.
Ce document, ainsi que d'autres peut être téléchargé sur ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/
Pour toutes questions à propos de FreeBSD, lisez la
documentation avant de contacter
<questions@FreeBSD.org>.
Pour les questions sur cette documentation, contactez
<doc@FreeBSD.org>.