Gibt es eine plattform- und dateisystemunabhängige Methode, um den vollständigen Pfad des Verzeichnisses zu ermitteln, in dem ein Programm mit C/C++ ausgeführt wird? Nicht zu verwechseln mit dem aktuellen Arbeitsverzeichnis. (Bitte schlagen Sie keine Bibliotheken vor, es sei denn, es sind Standardbibliotheken wie clib oder STL).
(Wenn es keine plattform-/dateisystemunabhängige Methode gibt, sind Vorschläge, die unter Windows und Linux für bestimmte Dateisysteme funktionieren, ebenfalls willkommen).
Wenn Sie einen Standardweg ohne Bibliotheken wünschen: Nein. Das gesamte Konzept eines Verzeichnisses ist nicht in der Norm enthalten.
Wenn Sie zustimmen, dass eine (portable) Abhängigkeit von einer standardnahen Bibliothek in Ordnung ist: Verwenden Sie Boost's filesystem library und fragen Sie nach dem initial_path().
IMHO ist das so nah wie möglich, mit gutem Karma (Boost ist ein gut etablierter Satz von Bibliotheken von hoher Qualität)
Nein, es gibt keine Standardmethode. Ich glaube, dass die C/C++-Standards nicht einmal die Existenz von Verzeichnissen (oder anderen Dateisystemorganisationen) berücksichtigen.
Unter Windows gibt GetModuleFileName() den vollständigen Pfad zu der ausführbaren Datei des aktuellen Prozesses zurück, wenn der Parameter hModule auf NULL gesetzt ist. Bei Linux kann ich nicht helfen.
Außerdem sollten Sie klären, ob Sie das aktuelle Verzeichnis oder das Verzeichnis, in dem sich das Programm-Image/die ausführbare Datei befindet, haben wollen. So wie es aussieht, ist Ihre Frage in diesem Punkt ein wenig zweideutig.