Maison >développement back-end >C++ >Comment puis-je déterminer de manière fiable le chemin de mon exécutable C/C ?

Comment puis-je déterminer de manière fiable le chemin de mon exécutable C/C ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-20 13:08:10667parcourir

How Can I Reliably Determine the Path of My C/C   Executable?

Détermination de l'emplacement de l'exécutable en C

En C/C, la récupération du chemin complet du programme en cours d'exécution peut être réalisée en utilisant diverses approches . Une préoccupation courante est que l'argument argv[0] fourni dans la fonction principale ne fournit pas toujours le chemin complet. Pour résoudre ce problème, nous explorons plusieurs solutions :

Systèmes basés sur Unix avec /proc

Dans les systèmes Unix avec prise en charge de /proc, la méthode la plus simple et la plus fiable est vers :

  • Linux: readlink("/proc/self/exe", buf, bufsize)
  • FreeBSD: readlink("/proc/curproc/file", buf, bufsize)
  • Solaris: readlink("/proc /self/path/a.out", buf, bufsize)

Systèmes basés sur Unix sans /proc

Pour les systèmes sans /proc, plusieurs solutions de secours peuvent être utilisées :

  • Si argv[0] commence par "/", il représente un chemin absolu.
  • Si argv[0] contient "/", ajoutez-le au répertoire de travail actuel (en supposant qu'il n'a pas été modifié).
  • Recherchez dans les répertoires $PATH l'exécutable argv[0].

En outre , il est recommandé de vérifier si l'exécutable est un lien symbolique et de le résoudre par rapport à son répertoire (sauf pour la méthode /proc sur Linux).

Systèmes Windows

Sous Windows, la méthode préférée est :

  • GetModuleFileName(NULL, buf, bufsize)

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