So bestimmen Sie den Speicherort der ausführbaren Datei in C
In C/C kann es schwierig sein, den vollständigen Pfad des aktuell ausgeführten Programms zu ermitteln. Insbesondere stellt die Verwendung von argv[0] möglicherweise nicht den vollständigen Pfad bereit.
Unix-Systeme ohne /proc
Wenn Ihrem Unix-System das /proc-Dateisystem fehlt, berücksichtigen Sie Folgendes Folgende Strategien:
- Überprüfen Sie, ob argv[0] mit einem Schrägstrich (/) beginnt: Dies zeigt ein Absolutes an Pfad.
- Wenn argv[0] Schrägstriche (/) enthält: Hängen Sie es an das aktuelle Arbeitsverzeichnis (cwd) an.
- Andernfalls suchen Sie in den angegebenen Verzeichnissen nach der ausführbaren Datei argv[0] die Umgebungsvariable $PATH.
Unix-Systeme mit /proc
Für Unix-Systeme mit /proc können Sie eine der folgenden Methoden verwenden:
- Linux: readlink("/proc/self/exe", buf , bufsize)
- FreeBSD: readlink("/proc/curproc/file", buf, bufsize)
- Solaris: readlink("/proc/self/path/a.out", buf, bufsize)
Windows-Systeme
Verwenden Sie unter Windows die Funktion „GetModuleFileName“:
GetModuleFileName(NULL, buf, bufsize);
Zusätzlich Überlegungen
- Stellen Sie sicher, dass es sich bei der ausführbaren Datei nicht um einen symbolischen Link handelt, und lösen Sie ihn gegebenenfalls auf.
- Der aufrufende Prozess sollte argv[0] korrekt festlegen, damit diese Informationen korrekt sind.
Das obige ist der detaillierte Inhalt vonWie kann ich den vollständigen Pfad meiner ausführbaren C/C-Datei abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn