La fonction execvp() exécute le programme donné en argument. Elle vérifie la variable $PATH pour trouver le programme. Je suis en train d'écrire quelque chose dans lequel je voudrais vérifier si plusieurs programmes existent avant d'appeler des fonctions exec(). Quel est le meilleur moyen de le faire?
Réponses
Trop de publicités?Vous pouvez utiliser getenv pour obtenir la variable d'environnement PATH puis rechercher à travers celle-ci.
http://www.opengroup.org/onlinepubs/000095399/functions/getenv.html
Vous pouvez ensuite utiliser fopen pour vérifier l'existence des noms de fichiers binaires spécifiques.
Vous pouvez également faire quelque chose comme system("which App"). qui recherche $PATH pour vous.
En fait, l'exécution de glibc et de netbsd essaie réellement d'exécuter la commande pour chaque élément le long du chemin jusqu'à ce qu'elle réussisse ou qu'elle épuise le chemin à chercher. Ne laisse pas beaucoup de place pour la réutilisation, mais semble bon.
En général, pour des questions comme celle-ci, j'aime aller à la source et voir ce qu'elle fait. Celle de NetBSD est généralement la meilleure lecture :