https://unix.stackexchange.com/a/12818/674
sagt
Sperrdateien werden von Programmen verwendet, um sicherzustellen, dass zwei (gut benommene) getrennte
Instanzen eines Programms, die gleichzeitig auf einem
System ausgeführt werden können, nicht gleichzeitig auf etwas anderes zugreifen. Die Idee ist
bevor das Programm auf seine Ressource zugreift, prüft es das Vorhandensein einer
Sperrdatei, und wenn die Sperrdatei existiert, gibt es entweder einen Fehler aus oder wartet darauf, dass
sie verschwindet. Wenn sie nicht existiert, erstellt das Programm, das die Ressource
„akquirieren“ möchte, die Datei, und dann warten andere Instanzen, die
später auf sie stoßen könnten, darauf, dass dieser Prozess damit abgeschlossen ist. Dies setzt natürlich voraus, dass das Programm, das die Sperre „akquiriert“, sie tatsächlich
freigibt und nicht vergisst, die Sperrdatei zu löschen.
Dies funktioniert, weil das Dateisystem unter allen UNIX-ähnlichen Betriebssystemen
die Serialisierung erzwingt, was bedeutet, dass zu einem bestimmten Zeitpunkt nur eine Änderung am
Dateisystem tatsächlich stattfindet . So ähnlich wie Sperren bei
Datenbanken und so.
Was bedeutet der letzte Absatz?
Ist es richtig, dass unter Linux eine Datei gleichzeitig von zwei Prozessen geschrieben werden kann und das Betriebssystem keine implizite Synchronisierung bietet, sondern eine explizite Synchronisierung von Programmierern erfordert?
Ist die Sperrdatei eine explizite Möglichkeit, den Zugriff auf dieselbe Datei durch mehrere Prozesse zu synchronisieren?
Danke.