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.
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.
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 }
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!