Bonjour,
j'ai un problème sou linux, je programme en C et voilà mon histoire
Depuis mon application je crée un processus fils, dans ce processus je redirige l'entrée standard vers la sortie (READ) d'une PIPE1, et la sortie standard vers l'entrée (WRITE) d'une PIPE2. La tout baigne, aucun problème. Ensuite je transforme ce process fils en SHELL à l'aide de execv qui, vous savez, remplace tout le process par le shell en gardant les redirections effectuées avant cet appel.
Maintenant dans mon processus père je fourni des commandes depuis l'entrée de la pipe PIPE1, et je récupère les réponses du shell depuis la sortie de PIPE2.
Encore là tout baigne, MAIS le problème c'est qu'il n y a que la première commande qui passe, car l'appel à read() reste bloquant même quand il n'y a plus de donée à lire, et c'est normal car l'autre bout de la pipe est ouvert.
Comment faire pour contourner ce problème?
Un gars m'a fait pensé à select() MAIS cela ne change rien du tout, car dans tous les cas je dois faire une boucle while de lecture comme suit:
donc en gros mon processus ne quitte pas cette boucle une fois qu'il y est
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 while ((byte = read (PIPE2[0], buffer, BUFSIZE))>0){ /*traitement du résultat reçu*/ }
Merci d'avance
Partager