Unter Windows können Sie Folgendes verwenden:
%Vor%szExeFileName enthält den vollständigen Pfad + den ausführbaren Namen
[Bearbeiten]
Für eine portabelere Lösung verwenden Sie argv[0]
oder einen anderen plattformspezifischen Code. Einen solchen Ansatz finden Sie hier: Ссылка .
argv[0]
Ihrer Hauptfunktion ist Ihr Dateiname.
Ein einfaches Code-Snippet:
%Vor% Unter Linux ist der Dateiname Ihrer Binärdatei das Ziel eines Symlinks bei /proc/self/exe
. Sie können den Systemaufruf readlink
verwenden, um das Ziel eines Symlinks zu finden.
Beachten Sie, dass dies den tatsächlichen Speicherort auf der Festplatte angibt, auf dem die Binärdatei gespeichert ist, nicht nur der Befehl, mit dem der Benutzer Ihr Programm gestartet hat.
Sie können den Namen der ausführbaren Datei normalerweise von argv[0]
:
Tatsächlich gibt es Möglichkeiten für eine Anwendung auf execl()
eine andere Anwendung (oder eine andere ähnliche Funktion) und überschreiben dieses Argument. Es ist immer noch unkonventionell, das System für diese Art von Anwendung zu ändern.
Wie bereits erwähnt, ist der Name Ihrer ausführbaren Datei in argv [0] enthalten. Wenn Sie das brauchen, könnten Sie:
%Vor%Wenn Sie den Namen einer Quelldatei der ausführbaren Datei benötigen, hat C ++ ein vordefiniertes Makro, das Sie verwenden können:
%Vor%Gehen Sie zu und scrollen Sie zu "Vordefinierte Makronamen"
In Linux (POSIX?) gibt es eine Umgebungsvariable namens _
, die den aktuellen Prozess enthält.
In C ++
%Vor%kompilieren
%Vor% druckt ./a.out
(oder was auch immer die ausgeführte Zeile ist, einschließlich Pfad).
Dies hat gewisse Vorteile gegenüber den anderen Ansätzen, es kann global gelesen werden (nicht übergeben argv[0]
) und benötigt keine Dateibehandlung.