Si le premier programme ouvre le fichier plusieurs fois, ses écritures peuvent être réparties dans plusieurs fichiers. Ça peut être le cas par exemple s'il s'agit d'un script shell qui a plusieurs lignes comme ceci :
echo foo >> fichier_commun.log
echo bar >> fichier_commun.log
Si le fichier est renommé entre les deux, les deux lignes seront dans des fichiers différents.
D'autre part, ce qui va lire fichier2.log devrait avoir un moyen de savoir si les écritures dans ce fichier sont terminées. Sinon on risque de se retrouver dans une situation ou on lit fichier2.log jusqu'à la fin alors qu'il n'est pas fini.
Selon le cas d'utilisation exact, ces deux situations peuvent poser problème ou non.
[^] # Re: Il peut y avoir un problème ...
Posté par Krunch (courriel, site web personnel) . En réponse au message accès concurrentiel aux fichiers. Évalué à 2. Dernière modification le 09 mars 2023 à 22:04.
Je vois deux autres problèmes potentiels.
Si le premier programme ouvre le fichier plusieurs fois, ses écritures peuvent être réparties dans plusieurs fichiers. Ça peut être le cas par exemple s'il s'agit d'un script shell qui a plusieurs lignes comme ceci :
Si le fichier est renommé entre les deux, les deux lignes seront dans des fichiers différents.
D'autre part, ce qui va lire fichier2.log devrait avoir un moyen de savoir si les écritures dans ce fichier sont terminées. Sinon on risque de se retrouver dans une situation ou on lit fichier2.log jusqu'à la fin alors qu'il n'est pas fini.
Selon le cas d'utilisation exact, ces deux situations peuvent poser problème ou non.
Une solution que j'aime bien est de tout donner à rotatelogs et de lui laisser gérer les fichiers : https://httpd.apache.org/docs/2.4/programs/rotatelogs.html
J'ai aussi écrit un patch pour ajouter un mode de tampon circulaire mais je sais pas s'il fonctionne toujours : https://bz.apache.org/bugzilla/show_bug.cgi?id=47170
pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.