Den vollständigen Pfad der ausführbaren Datei in C finden
In C und C kann es schwierig sein, den vollständigen Pfad des aktuell ausgeführten Programms zu ermitteln. Dies liegt daran, dass argv[0], das den Programmnamen enthält, häufig nicht den vollständigen Pfad bereitstellt.
Unix-basierte Systeme
Um den Speicherort der ausführbaren Datei zuverlässig abzurufen auf Unix-Systemen mit „/proc“:
- Verwenden readlink("/proc/self/exe", buf, bufsize) (Linux)
- Verwenden Sie readlink("/proc/curproc/file", buf, bufsize) (FreeBSD)
- Verwenden readlink("/proc/self/path/a.out", buf, bufsize) (Solaris)
Auf Unix-Systemen ohne „/proc“:
- Wenn argv[0] mit „/“ beginnt, ist es der absolute Pfad.
- Wenn argv[0] enthält „/“, hängen Sie es an das aktuelle Arbeitsverzeichnis an.
- Suchen Sie nach argv[0] als ausführbare Datei in den in $PATH angegebenen Verzeichnissen.
Windows
Verwenden Sie auf Windows-Systemen den folgenden Code:
GetModuleFileName(NULL, buf, bufsize);
Nach dem Login kopieren
Zusätzlich Überlegungen
- Überprüfen Sie, ob es sich bei der ausführbaren Datei um einen Symlink handelt, und lösen Sie ihn entsprechend auf (nicht erforderlich, wenn Sie die Methode „/proc“ unter Linux verwenden).
- Beachten Sie, dass es sich um den handelt Verantwortung des aufrufenden Prozesses, argv[0] korrekt festzulegen, insbesondere in nicht vertrauenswürdigen Situationen (z. B. ausführbare Setuid-Dateien).
Das obige ist der detaillierte Inhalt vonWie kann ich den vollständigen Pfad meiner ausführbaren Datei in C/C abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!