[C] Mountpoint einer Datei herausfinden

fortyseven

Grünschnabel
Hallo zusammen,

Folgendes: ich habe einen Pfad zu einer Datei (unter Unix) und muss nun herausfinden, auf welcher gemounteten Platte diese Datei liegt liegt. Ich muss den MountDir wissen, da ich den Restilchen Speicherplatz berechnen will bevor ich in die Datei schreibe.

Beispiel
Dateiname: /var/opt/iserv.log

Folgendes ist gemountet:
/
/proc
/dev/fd
/var
/var/run

nun möchte ich mittels dem Dateinamen bzw. Pfad ("/var/opt/iserv.log") herausfinden, dass diese Datei auf "/var" liegt.

Wie kann ich mit C unter Unix am besten/einfachsten/saubersten herausfinden, auf welchem gemounteten Verzeichnis die Datei liegt?

Danke für eure Bemühungen

lg
 
Ich denke der einfachste Weg duerfte sein den Pfad mit den verschiedenen Mountpoints zu vergleichen, dabei natuerlich von / aus immer tiefer graben um eine moeglichst genaue Uebereinstimmung zu bekommen.
 
Ja so was in der Art hab ich mir gedacht. Allerdings habe ich keine Ahnung, wie ich in C an eine Liste aller verfügbarer Mountpoints komme... kennst du da eine Funktion oder so? (ich könnte das ganze natürlich mit system(); machen und in ein File schreiben, aber das finde ich recht unschön und gibt in meinen Augen nur Probleme)

lg
 
Hab eine Lösung gefunden.

mit der funciton statvfs( pfad, buffer ). Dort muss ich nicht den genauen Mountpoint angeben, sondern kann auch ein Unterverzeichnis angeben. Der richtige Mountpoint wird dann automatisch gefunden und die dazu benötigten Daten für den freien Speicher zu berechnen werden an die übergebene Buffer-Adresse geschrieben

Danke und Gruss
 
Und wenn es keinen Befehl gegeben haette haettest Du die Mountpoints aus /etc/mtab holen koennen.
Aber so wie Du es jetzt hast ist es natuerlich einfacher.
 
Zurück