C: Compléter automatiquement les noms de fichiers correspondant à un motif dans access () ou execl () sur unix / linux

J’ai un programme masterprog qui exec () est un binary correspondant à un modèle spécifique parmi plusieurs fichiers tels que slaveprog.1.1.0 , slaveprog.1.2.1 , slaveprog.2.1.10 , … dans le même répertoire.

Pour être plus clair, mon masterprog vérifie l’environnement du système (dans ce cas, Ubuntu 16.04 LTS amd64) et recherche quelques facteurs supplémentaires et décide quel slaveprog.XYZ exécuter. Ma convention de nommage slaveprog est la suivante:

  • X : 1 = debian | 2 = rpm
  • Y : 1 = amd64 | 2 = x86
  • Z : dernière version de slaveprog

Mon programme maître est capable de générer slaveprog.1.1. de l’environnement et appelle:

 access("./slaveprog.1.1.*",F_OK); // To verify if file exists execl("/slaveprog.1.1.*","/slaveprog.1.1.*",NULL); 

Mais malheureusement, access() renvoie -1 même si slaveprog.1.1.3 existe dans le répertoire de travail en cours.

Quelqu’un peut-il me suggérer s’il existe un moyen plus simple que d’ouvrir le répertoire, répertorier tous les fichiers et sélectionner le fichier approprié pour y parvenir?