Heim >Backend-Entwicklung >C++ >Wie kann ich das Ausführungsverzeichnis meines C/C-Programms auf verschiedenen Plattformen abrufen?

Wie kann ich das Ausführungsverzeichnis meines C/C-Programms auf verschiedenen Plattformen abrufen?

Susan Sarandon
Susan SarandonOriginal
2024-12-24 17:49:09925Durchsuche

How Can I Get the Execution Directory of My C/C   Program Across Different Platforms?

Bestimmen des Programmverzeichnisses

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.

Plattformunabhängige Ansätze

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.

Windows

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
}

Linux

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!

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