Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » GNU/Linux » In welchem Verzeichniss bin ich?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
27.08.2003, 15:44 Uhr
typecast
aka loddab
(Operator)


Wie kann ich in einem C++ Porgramm herausfinden, in welchem Verzeichniss ich mich gerade befinde, welche Rechte ich in diesem Verzeichniss habe, und wo sich die Datei befindet, die gerade ausgeführt wird?
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
27.08.2003, 16:29 Uhr
0xdeadbeef
Gott
(Operator)


getcwd, access bzw. stat, alle in der unistd.h zu finden. Doku in Sektion 2 der manpages.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
27.08.2003, 16:33 Uhr
virtual
Sexiest Bit alive
(Operator)


1. Aktuelles Verzeichnis: getcwd, besser noch get_current_directory

2. Rechte auf dieses verzeichnis: stat gibt dir allg. Information, auch dir berechtigungen. Wenn Du wissen willst, ob Du mit deinem aktuellen User etwas darfst, nimm besser access

3. Welches Programm bin ich?: Ist mir keine triviale Lösung bekannt. Vorgehensweise, wie ich es machen würde: als ersten Parameter wird ja übergeben, wie das Programm aufgerufen wurde. Entweder dieser Name ist ein absoluter oder realtiver Pfad: dann kann man das Binary mit dem current directory zusammen bestimmen. Andernfalls muß man ein locate machen: PATH Variable auslesen und für jeden Pfadprüfen, ob man drin ist. Ich habe das zwar schon mal programmiert, allerdings habe ich das nicht in einer Form, die leicht verdaulich wäre.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
27.08.2003, 16:36 Uhr
typecast
aka loddab
(Operator)


Ok danke.
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
27.08.2003, 16:37 Uhr
typecast
aka loddab
(Operator)


@virtual: get_current_directory gibt es nicht
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
27.08.2003, 16:54 Uhr
0xdeadbeef
Gott
(Operator)


get_current_working_dir_name muss es heißen. Und wenn du die benutzt, vergiß nicht, den Speicher nachher wieder zu freen. Abgesehen davon ist das ne GNU-Extension, ich würde also eher getcwd benutzen.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 27.08.2003 um 16:55 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
30.09.2003, 11:13 Uhr
typecast
aka loddab
(Operator)


So der Thread war zwar tot, aber ich habe jetzt noch eine einfache Möglichkeit gefundnen, den absoluten Pfad herauszubekommen.
Man nimmt wie schon gesagt, aus argv[0] den Namen der Datei. Auf diesen lässt man die Funktion realpath los. Dann bekommt man den absoluten Pfad der Anwendung.
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
30.09.2003, 11:48 Uhr
0xdeadbeef
Gott
(Operator)


Stimmt eigentlich. Allerdings wäre es dann noch sinnvoller, einfach "." als Parameter mitzugeben:

C++:
char pfadname[1024];
realpath(".", pfadname); //pfadname enthät $PWD, und realpath gibt einen Zeiger auf pfadname zurück


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
30.09.2003, 11:51 Uhr
typecast
aka loddab
(Operator)


Das ist nur sinnvoll, wenn man das Programm auch in dem Verzeichniss aufruft, in dem es auch wirklich steht. Hat man das Programm z.B. in /usr/local/bin/ und ruft es in seinem Home-Verzeichniss auf, dann funktioniert das nicht.
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
30.09.2003, 11:55 Uhr
typecast
aka loddab
(Operator)


Moment, das war ein schlechtes Beispiel, denn dort braucht man die realpaht()-Funktion nicht. Aber wenn man einen Link in /usr/bin/ zu einem hat, dann gibt es die Probleme.
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ GNU/Linux ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: