Bonjour à tous.

Voici le contexte :

J'ai à ma disposition des librairies spécialement développées pour utiliser un mini pc doté de nombreuses interfaces de communication tournant sous linux.

Je voudrais développer une sorte d'interface commande AT sur console qui permette d'une part d'appeler les exécutables classiques linux (dans /bin et /sbin) tels que ifconfig, echo, etc, et d'autre part des exécutables liés aux fonctions disponibles dans les librairies fournies.

Voici une version très simplifiée du code:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
while(1)
{
   Affichage("Saisissez une commande")
   Récupération de la commande et des arguments s'il y en a
   Appel avec la fonction system()
}
Voici maintenant mon problème :

Les exécutables liés aux librairies appellent des fonctions de ces librairies qui elles même font des appels d'exécutables avec system().
Dans mon code, quand je fais mon appel system(), je récupère la main dès que le premier exécutable est lancé et mon code poursuit la séquence du while() et redemande une une nouvelle commande. L'ennui c'est que l'exécutable appelé par la librairie est toujours en train de tourné et fait des outputs sur la sortie standard après que mon code ait demandé de saisir une nouvelle commande...

j'aimerai donc savoir comment je pourrais faire pour savoir que les exécutables appelés par les librairies sont toujours en cours d'exécution, sans toucher aux codes des librairies?
Ainsi je pourrai modifier mon code pour qu'il attende la fin de leur exécution avant de poursuivre dans le while() et demander la saisie d'une autre commande.


J'espère que l'explication de mon problème est compréhensible... N'hésitez pas à me demander des précisions.

Et surtout merci beaucoup d'avance à ceux qui me répondront!