struct DIR - Verzeichnisse auslesen m/i
-
Danke!
Nochwas kleines
:
Gibt es irgendeine Möglichkeit den kompletten Pfad eines Verzeichnisses auszulesen? Also ich meine, wenn ich z.B. als Kommandozeilenargument einen "." bekomme, dann lese ich ja mit opendir(argv[1]) das aktuelle Verzeichnis aus. Wie aber kann ich diesen "." in den kompletten Pfad auflösen?! Also es befinde sich mein Programm in /test, wie komme ich also an diesen Pfadnamen?! Mein Programm funktioniert, aber gibt nur "." statt "/test" aus.
Hoffentlich ist es verständlich, was ich meine
Nochmals Danke im Voraus.
Grüßle, Mirko
-
Hallo
//--snip -------- #include<unistd.h> char cdir[MAX_PATH+1]; //aktuelle arbeitsverzeichnis getcwd(cdir,MAX_PATH); //---- snap -------
Hoffe das ist was du meintest.
-
Jopi, aber gibt es das auch für beliebige Argumente, um z.B. ein ../ aufzulösen?!
-
Hallo,
eine fertige Bibleotheksfunktion gibt es AFAIK nicht. Das müsstest du dann selbst implementieren. Wofür brauchst du das ?
-
Ich schreibe mein eigenes ls. Es sollen alle Verzeichnisse ausgegeben werden, die ich meinem Programm als Argumente übergebe. Also z.B. ./meinls /Users
Dann soll das Verzeichnis /Users ausgeben werden (Im Stil von ls -la). In der ersten Zeile allerdings soll der vollständige Pfadname erscheinen.
Gibt nun aber ein User ./meinls .. ein und meinls befindet sich in /test/proggi/
Dann wird zwar richtig der Inhalt von test ausgegeben, also ein Ebene tiefer, als Verzeichnisname in der 1. Zeile erscheint dann aber nur das übergeben .. statt dem vollen Pfad, genau das möchte ich auflösen.
-
Japp wie gesagt, soweit ich weiss gibt es dafür keine Funktion. Du kannst dir doch einfach mal den source von ls besorgen und gucke wie die das gelöst haben.
-
Eigentlich ja, nur dass die es gar nicht ausgeben, sondern nur "total 14", also die Anzahl der Dateien im aktuellen Verzeichnis.
Aber egal, mach ichs halt schnell selbst
Trotzdem vielen Dank für die Hilfe.
-
Mach doch
chdir(".."); getcwd();
-
SG1 schrieb:
Mach doch
chdir(".."); getcwd();Dann muss er immer noch den pfad parsen und für jedes .. ein Verzeichnis nachoben ;). Also doch von Hand.
-
Cool! Genau auf das bin ich jetzt durch nachdenken auch gekommen und wollte es gerade posten, da sehe ich, dass Du es auch geschrieben hast
Ich kann wohl Gedanken lesen
Meine Lösung:
chdir((char
PROGPATH);
getcwd((charPROGPATH, 1024);
Wenn nun von der Kommandozeile ein ../.. z.B. in PROGPATH steht, so steht nach diesen 2 Zeilen der komplette Pfad drin
Echt cool, Danke!
-
prolog schrieb:
SG1 schrieb:
Mach doch
chdir(".."); getcwd();Dann muss er immer noch den pfad parsen und für jedes .. ein Verzeichnis nachoben ;). Also doch von Hand.
Nö, chdir(pfad); tuts auch.
<edit>Ah, da war wer schneller :)</edit>
-
SG1 schrieb:
prolog schrieb:
SG1 schrieb:
Mach doch
chdir(".."); getcwd();Dann muss er immer noch den pfad parsen und für jedes .. ein Verzeichnis nachoben ;). Also doch von Hand.
Nö, chdir(pfad); tuts auch.
Stimmt. Wieder mal zu kompliziert gedacht.
-
Hallo!
Schau mal im FAQ, da findest du ne fertige Implementation mit Erklärungen.
Da ist aber noch ein Bug drin..