Jeder Prozess, der die Datei zum Schreiben öffnen kann, kann darauf schreiben. Schreibvorgänge können gleichzeitig mit Ihren eigenen Schreibvorgängen erfolgen, was zu (möglicherweise) unbestimmten Zuständen führt.
Es ist Ihre Verantwortung als Anwendungsautor, sicherzustellen, dass keine schlechten Dinge passieren. Meiner Meinung nach ist das obligatorische Sperren keine gute Idee.
Eine bessere Idee ist es, keinen Schreibzugriff auf Prozesse zu gewähren, die nicht in die Datei geschrieben werden sollen.
Wenn mehrere Prozesse eine Datei öffnen, verfügen sie über unabhängige Dateizeiger, sodass sie sich gegenseitig suchen() und sich gegenseitig nicht beeinflussen können.
Wenn eine Datei von einem Thread-Programm (oder einer Task, die ihre Dateideskriptoren gemeinsam benutzt) geöffnet wird, wird der Dateizeiger ebenfalls freigegeben. Sie müssen also eine andere Methode verwenden, um auf die Datei zuzugreifen, um Rennen zu vermeiden Bedingungen, die Chaos verursachen - normalerweise pread, pwrite oder die Scatter/Gather-Funktionen readv und writev.
Obligatorische Sperren sind meiner Meinung nach kein wünschenswertes Feature :) – MarkR
Einverstanden! Ein besseres Anwendungsdesign wäre vorzuziehen. Aber wenn er eine Akte gegen Leser schützen muss, die er nicht kontrollieren kann, sind sie nur ein Weg zu gehen. –