Patrick Canterino: Systeme ohne O_EXCL

Beitrag lesen

Hallo!

Ich arbeite gerade an einem Datei-Manager in Perl. Dieser hat auch die Möglichkeit, Dateien anzulegen. Damit er nicht versehentlich eine Datei dabei überschreibt, prüft er zunächst mit dem Dateitest-Operator -e, ob die Datei nicht schon existiert.
Jetzt ist mir aber aufgefallen, dass ich dadurch ja eine der vielgefürchteten "Race Conditions" programmiert habe und wollte deswegen mit sysopen() und O_EXCL arbeiten.
In perldoc -f sysopen steht aber folgender Satz:

"In many systems the O_EXCL flag is available for opening files in exclusive mode."

Nun ja, das hört sich meiner Meinung nach nicht gerade so an, als ob O_EXCL auf absolut jedem System verfügbar ist.
Ich wollte daher mal fragen, ob es tatsächlich noch Systeme gibt, die O_EXCL nicht ünterstützen. Und wenn ja, welche? Es sollten aber Systeme sein, die auch wirklich genutzt werden und nicht irgendwie Windows 3.11 oder so ;-)

Falls niemand eine Ahnung hat, ist das nicht schlimm. Ich habe nämlich eine Idee, wie man es auch machen kann (mit O_RDONLY und O_CREAT).

Ach ja, falls sich jemand fragt, warum ich das wissen will: Bei dem Dateimanager handelt es sich um ein OpenSource-Projekt, das auf möglichst vielen Systemen funktionieren soll.

Viele Grüße
  Patrick Canterino