Pfad von ausgeführter Datei finden
-
Hi,
Wie kann ich unter Linux den Pfad der aktuellen Datei finden und diesen in
eine Variable speichern?
z.B
string foo = getmeinpfad()
Inhalt in foo dann z.B /home/foobar/foo.elf
Ich habe keine Ahnung, wie ich das anstellen soll.Mfg
IrrerCoder
-
ich glaube irgend ein argc parameter ist der pfad, lass die dir doch mal ausgeben.
-
Fedaykin@FH schrieb:
ich glaube irgend ein argc parameter ist der pfad, lass die dir doch mal ausgeben.
Ne, was du meinst ist argv[0] und das enthält den Aufruf.
-
Wenn das Programm mit überhaupt irgendeiner Pfadangabe aufgerufen wurde (egal ob absolut oder relativ), und das aktuelle Verzeichnis seit dem Programmstart nicht verändert wurde, sollte realpath(argv[0], NULL) das richtige liefern. Achtung: Der Rückgabewert muss mit free() freigegeben werden!
Bei einem Aufruf über $PATH sieht das anders aus: Hier müsste man vermutlich für jedes Mitglied von $PATH prüfen, ob $PATH/argv[0] existiert und ausführbar ist. Dann kann man diesen Pfad evtl. noch mit realpath() normalisieren. Evtl. gibts eine Funktion die das schon für einen macht, aber ich kenne keine.
-
LordJaxom schrieb:
Wenn das Programm mit überhaupt irgendeiner Pfadangabe aufgerufen wurde (egal ob absolut oder relativ), und das aktuelle Verzeichnis seit dem Programmstart nicht verändert wurde, sollte realpath(argv[0], NULL) das richtige liefern. Achtung: Der Rückgabewert muss mit free() freigegeben werden!
Bei einem Aufruf über $PATH sieht das anders aus: Hier müsste man vermutlich für jedes Mitglied von $PATH prüfen, ob $PATH/argv[0] existiert und ausführbar ist. Dann kann man diesen Pfad evtl. noch mit realpath() normalisieren. Evtl. gibts eine Funktion die das schon für einen macht, aber ich kenne keine.
nicht ganz argv[0] enhält den absoluten pfad, wenn das programm sich in einem der suchpfade, welche in PATH gelistet sind, befindet, beim aufruf.
-
Hallo
du könntest mal unter /proc/<pid> mal gucken
und dann das entsprechende file lesenmfg Kyro-0
-
/proc/self/exe ist ein Link auf die ausgeführte Datei.