Je veux ouvrir le fichier en mode ajout sur un hôte Windows 7 en utilisant C#/.NET. Je veux utiliser les opérations de sortie de fichier habituelles à cette fin. J'ai trouvé une telle solution :
FileStream trace_fd = new FileStream(r"c:\temp\testlog.txt",
FileMode.Append,
FileAccess.Write,
FileShare.ReadWrite)
Mon fichier de trace est lisible même si mon programme avec la ligne ci-dessus est en cours d'exécution. Je n'ai plus d'exception indiquant que le fichier est utilisé par un autre processus à partir du bon code comme ceci :
FileStream good_logreader_fd = new FileStream("c:\temp\testlog.txt",
FileMode.Read,
FileAccess.Read,
FileShare.ReadWrite)
Ensuite, j'ai un autre programme (un scanner de journal bogué) avec une ligne telle que :
FileStream bad_logreader_fd = new FileStream("c:\temp\testlog.txt",
FileMode.Read,
FileAccess.Read,
FileShare.None)
Cette ligne est évidemment un bug pour le scanner de journal. Si mon programme ne fonctionne pas, alors le scanner de journal buggy obtiendra un verrou exclusif et les exécutions suivantes de mon programme échoueront à obtenir un fd pour le fichier de trace.
Ma question est que puis-je faire pour éviter qu'un tel scénario horrifique ne se produise. Par exemple, puis-je définir des autorisations de fichier pour le fichier de trace pour empêcher quiconque de prendre un verrou exclusif ? Si oui, alors comment ? Y a-t-il autre chose qui peut protéger mon programme du problème du scanner de journal bogué ? Notez que je dois conserver le même nom de fichier de trace entre les exécutions de mon programme.