Pfad zur Binary herausfinden
-
Hi,
habe auch schon im normalen C++ Bereich gefragt, aber so richtig konnte mir wohl keiner helfen.
http://www.c-plusplus.net/forum/viewtopic-var-t-is-261356.html
Ich fasse das mal Stichwortartig zusammen
- Will dem User ein Template Input-File ins aktuelle Verzeichnis kopieren
- Brauche dafür Pfad in der das gestartete Binary liegt
- Möchte keine Umgebungsvariable verwenden
- Das File nicht unbedingt fest in den Code schreibenUnter Windows scheint GetModuleFileName das richtige zu sein.
Das einzige was ich im Internet so finde wäre argv[0] zu verwenden. Es wird aber ein Link verwendet, der z.B. in /usr/bin liegt und das Programm in einem ganz anderen Ordner.
Aber so schwer kann das doch eig. nicht sein ... man braucht den Pfad ja auch, wenn man irgendwelche configs oder so läd.
Oder wie würde man das machen, wenn man beispielsweise eine Template Engine verwendet.
-
/proc/self/exe ist ein Link auf das Binary.
-
rüdiger schrieb:
/proc/self/exe ist ein Link auf das Binary.
Klasse, sowas hab ich gesucht. Danke !
/// @brief erzeugt eine Template-Datei im uebergebenen Verzeichnis /// @param[in] target Zielverzeichnis void createTemplateFile(string target){ char buf[PATH_MAX + 1]; string path; string befehl; if (readlink("/proc/self/exe", buf, PATH_MAX) == -1){ throw std::string("readlink() failed"); } path = buf; path = path.substr(0, path.rfind('/')); path = path + "/../doc/template.ini"; string befehl = "cp " + path + " " + target; system(befehl.c_str()); }
-
mist, muss mich doch mal anmelden, editieren ist schon was schönes ..
habe in Zeile 6 noch schnell
string befehl
dazu geschrieben. Das muss wieder raus bzw. in Zeile 14 die string Deklaration entfernen.