Ist Datei lesbar? (Linux)
-
Also mein problem ist, herauszufinden ob eine Datei lesbar ist.
Bis jetzt prüfe ich das einfach indem ich versuche die Datei zum lesen zu öffnen. Wenn ich das jetzt aber mit einem kompletten Directory, das viele Dateien enthält, (beispielsweise /dev) bei jeder Datei mache, ist das sehr zeitaufwändig. Kann man denn irgendwie anders die Berechtigungen einer Datei auslesen?
-
Dieser Thread wurde von Moderator/in Jansen aus dem Forum Borland C++ Builder (VCL/CLX) in das Forum Linux/Unix verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Klar, sieh Dir einfach mal die Manpage zu man: stat(2) an!
-
Ja, das war genau was ich gesucht hab!
Jetzt hab ich aber noch ein kleines Problem:
Wenn ich die erhaltenen Dateiattribute prüfe, ob die Datei ein Link ist, erhalte ich immer true!?if (filestat.st_mode & S_IFLNK) //always true
-
Probier doch mal das Makro S_ISLNK; Du übergibst den Mode und bekommst einen Wert ungleich Null zurück, wenn es sich um einen Link handelt.
-
Jo damit funktioniert's
, aber ich muss dann man: lstat(2) statt man: stat(2) verwenden!
-
Klar, wenn Du Informationen über den Link selbst möchtest natürlich.
-
if(access(path_to_file_cstr,R_OK)==0) // lesbar else // oder auch nicht
-
Hatte ganz vergessen. *stat() is zwar ganz nett, aber du hast verloren wenn du mehr als die UNIX Berechtigungen hast, sachen wie ACLs oder SELinux kannst du damit nicht abfragen. access() sollte die jedoch beruecksichtigen....