Comment déterminer l'emplacement de l'exécutable en C
En C/C, obtenir le chemin complet du programme en cours d'exécution peut être difficile. Plus précisément, l'utilisation de argv[0] peut ne pas fournir le chemin complet.
Systèmes Unix sans /proc
Si votre système Unix ne dispose pas du système de fichiers /proc, considérez le stratégies suivantes :
- Vérifiez si argv[0] commence par une barre oblique (/) : cela indique une valeur absolue path.
- Si argv[0] contient des barres obliques (/) : ajoutez-le au répertoire de travail actuel (cwd).
- Sinon, recherchez l'exécutable argv[0] dans les répertoires spécifiés dans la variable d'environnement $PATH.
Systèmes Unix avec /proc
Pour les systèmes Unix avec /proc, vous pouvez utiliser l'une des méthodes suivantes :
- 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 Windows
Sous Windows, utilisez la fonction GetModuleFileName :
GetModuleFileName(NULL, buf, bufsize);
Copier après la connexion
Supplémentaire Considérations
- Vérifiez que l'exécutable n'est pas un lien symbolique et résolvez-le si nécessaire.
- Le processus appelant doit définir argv[0] correctement pour que ces informations soient exactes.
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!