In C/C kann es für plattformübergreifende Anwendungen eine Herausforderung sein, den vollständigen Pfad zu dem Verzeichnis zu ermitteln, in dem ein Programm ausgeführt wird. Dieser Artikel befasst sich mit diesem Problem und bietet Lösungen für verschiedene Plattformen und Dateisysteme.
Leider gibt es keine Standard-C/C-Bibliotheksfunktion, die den Verzeichnispfad des Programms zurückgibt auf plattformunabhängige Weise. Dieses Ergebnis kann jedoch durch die Verwendung betriebssystemspezifischer APIs erzielt werden.
Unter Windows kann die GetModuleFileName-Funktion den vollständigen Pfad zum Modul (ausführbare Datei) abrufen.
char pBuf[256]; size_t len = sizeof(pBuf); int bytes = GetModuleFileName(NULL, pBuf, len); if (bytes) { return bytes; } else { return -1; // Error }
Bei Linux-Systemen kann die Readlink-Funktion auf den symbolischen Link in „/proc/self/exe“ zugreifen, um dies zu ermitteln Der ausführbare Dateipfad des Programms.
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; } else { return -1; // Error }
Beachten Sie, dass diese Ansätze spezifisch für bestimmte Plattformen und Dateisysteme sind. Wenn Sie eine umfassendere Lösung benötigen, sollten Sie die Verwendung plattformübergreifender Bibliotheken wie Boost.filesystem oder Qt in Betracht ziehen.
Das obige ist der detaillierte Inhalt vonWie kann ich das Ausführungsverzeichnis meines C/C-Programms auf verschiedenen Plattformen abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!