Bonjour à tous & à toutes,
Je me suis lancé dans un projet de scripting Bash pour apprendre à utiliser les Named Pipe.
Ecrire & lire dans un Named Pipe (FIFO) ne me pose pas de problème. Mais la "double" communication, elle, si.
En fait, j'aimerai que mes scripts fassent ceci:
1er script:
--------------------------------------------------------------------------
demon
Il comportera un nombre à deviner.
2ème script
client
Il fera des propositions au demon afin de trouver le nombre qu'il contient.
--------------------------------------------------------------------------
Le démon répondra "le nombre est > à ce que vous avez proposé" (ou < ou = -> si égal bingo le script client s'arrête, mais pas le demon)
Au niveau de l'affichage, cela se représente comme suit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $ ./demon Vous avez essayé le nombre 10 Vous avez essayé le nombre 15 Vous avez essayé le nombre 12
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 $ ./client Votre proposition: 10 10 n'est pas le bon nombre, c'est > au nombre à trouver Votre proposition: 15 15 n'est pas le bon nombre, c'est < au nombre à trouver Votre proposition: 12 Bingo! // on sort du script $
La génération du nombre dans le demon ne doit pas être prise en compte. Tout ce qui est switch pour retourner le < > ou = ne me pose pas de problème.
J'arrive à faire la lecture quand on fait la proposition, et donc l'affichage de demon, mais par contre je n'arrive pas à renvoyer une valeur à mon client, et donc savoir si on a trouvé ou non...
Mes script en sont là pour les NamedPipe:
demon:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 #!/bin/bash MYVAR="10" while read f ; do echo "valeur" $f done < tube1
client:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 #!/bin/bash while : do cat > tube1 done
Je voulais faire en sorte que dans mon script demon, je fasse un genre de "echo $result > tube2" et donc de faire un cat < tube2 dans mon client, mais cela ne fonctionne pas...
Je ne suis pas sûre d'être sur la bonne voix...
Si quelqu'un pouvait éclairer ma lanterne, ca serait vraiment sympa!
Partager