Abrufen des Programmverzeichnisses in C/C über Plattformen und Dateisysteme hinweg
In vielen Szenarien ist es notwendig, das Verzeichnis zu bestimmen, aus dem das Programm stammt ein Programm läuft. Diese Informationen können für verschiedene Zwecke wertvoll sein, beispielsweise für den Zugriff auf Konfigurationsdateien oder für die Protokollierung. Allerdings kann es eine Herausforderung darstellen, dieses Verzeichnis plattform- und dateisystemunabhängig zu erhalten.
Standardansätze
Die Standard-C/C-Bibliothek tut dies leider stellen hierfür keine Standardfunktion zur Verfügung. Bei plattformspezifischen Lösungen stellt sich die Situation wie folgt dar:
Windows
Auf Windows-Systemen kann die Funktion GetModuleFileName verwendet werden, um den vollständigen Pfad zur ausführenden Anwendung abzurufen .
char pBuf[256]; size_t len = sizeof(pBuf); int bytes = GetModuleFileName(NULL, pBuf, len); return bytes ? bytes : -1;
Linux
Für Linux-Systeme gilt das Mit der Readlink-Funktion kann der symbolische Link gelesen werden, der auf das ausgeführte Programm verweist.
char pBuf[256]; size_t len = sizeof(pBuf); int bytes = MIN(readlink("/proc/self/exe", pBuf, len), len - 1); if (bytes >= 0) pBuf[bytes] = ''; return bytes;
Das obige ist der detaillierte Inhalt vonWie kann ich das Verzeichnis eines Programms in C/C auf verschiedenen Plattformen abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!