Hello HEB,
Dort lese ich im Manual bei der Funktion fopen Folgendes:
Eine Liste der möglichen Modi von fopen() mittels mode [...] und dort dann bei mehreren Modi den Satz "Existiert die Datei nicht, versuche, diese zu erzeugen."
Meine Frage: Wenn ich eine leere Datei example.txt einfach nur erzeugen möchte, also _weder_ eine Lese-, _noch_ eine Schreiberechtigung setzen möchte, was bietet sich da als Alternative zu fopen() an?
Es ist immer besser, die Datei mit fopen() zu erzeugen, weil in einem Multiusersystem die Race Conditions beachtet werden müssen. fopen() ist in der Lage, die Prüfung auf Existenz und die angewiesene Aufgabe (öffnen, erzeugen, ...) in einem atomistisch gekapsleten Prozess abzuwickeln. Das geht mit keiner anderen Funktion.
Auch touch() leistet das nicht. Angenommen, Du prüfst im Zeitpunkt Z1, ob die Datei schon vorhanden ist, um sie dann zu Z5 anzulegen mit touch(), dann kann dies immer noch zu Z2, Z3, Z4 ein anderer Prozess bereits erledigt haben. Touch() würde dann das Filedatum der jetzt bereits vorhandenen Datei verändern. Das _kann_, je nach Aufgaben der Programme, zu Fehlern führen.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg