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);
Copier après la connexion
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!