Localisation du chemin complet de l'exécutable en C
En C et C, déterminer le chemin complet du programme en cours d'exécution peut être difficile. En effet, argv[0], qui contient le nom du programme, ne fournit souvent pas le chemin complet.
Systèmes basés sur Unix
Pour récupérer de manière fiable l'emplacement de l'exécutable sur les systèmes Unix avec "/proc":
- Utilisez readlink("/proc/self/exe", buf, bufsize) (Linux)
- Utilisez readlink("/proc/curproc/file", buf, bufsize) (FreeBSD)
- Utilisez readlink("/proc/self/path/a.out", buf, bufsize) (Solaris)
Sur les systèmes Unix sans "/proc":
- Si argv[0] commence par "/", c'est le chemin absolu.
- Si argv[0] contient "/", ajoutez-le au répertoire de travail actuel.
- Recherchez argv[0] comme exécutable dans les répertoires spécifiés dans $PATH.
Windows
Sur les systèmes Windows, utilisez le code suivant :
GetModuleFileName(NULL, buf, bufsize);
Considérations supplémentaires
- Vérifiez si l'exécutable est un lien symbolique et résolvez-le en conséquence (pas nécessaire si vous utilisez la méthode "/proc" sous Linux).
- Notez qu'il est de la responsabilité du processus appelant de définir correctement argv[0], en particulier dans les situations non fiables (par exemple, exécutables setuid).
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