Maison >développement back-end >C++ >Comment puis-je obtenir le répertoire d'exécution de mon programme C/C sur différentes plates-formes ?

Comment puis-je obtenir le répertoire d'exécution de mon programme C/C sur différentes plates-formes ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-24 17:49:09929parcourir

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

Détermination du répertoire du programme

En C/C, obtenir le chemin complet vers le répertoire à partir duquel un programme est exécuté peut être un défi pour les applications multiplateformes. Cet article aborde ce problème en proposant des solutions adaptées à différentes plates-formes et systèmes de fichiers.

Approches indépendantes de la plate-forme

Malheureusement, il n'existe pas de fonction de bibliothèque C/C standard qui renvoie le chemin du répertoire du programme dans d'une manière indépendante de la plate-forme. Cependant, l'utilisation d'API spécifiques au système d'exploitation peut obtenir ce résultat.

Windows

Sous Windows, la fonction GetModuleFileName peut récupérer le chemin complet du module (fichier exécutable).

char pBuf[256];
size_t len = sizeof(pBuf);
int bytes = GetModuleFileName(NULL, pBuf, len);
if (bytes) {
    return bytes;
} else {
    return -1; // Error
}

Linux

Pour les systèmes Linux, la fonction readlink peut accéder au lien symbolique dans "/proc/self/exe" pour déterminer le chemin du fichier exécutable du programme.

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
}

Notez que ces approches sont spécifiques à certaines plates-formes et systèmes de fichiers. Si vous avez besoin d'une solution plus complète, envisagez d'utiliser des bibliothèques multiplateformes comme Boost.filesystem ou Qt.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn