|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Nouveau Membre du Club
![]() Yann LE PETITCORPSAnalyste d'exploitation Inscription : avril 2011 Messages : 47 ![]() |
Salut,
J'essaye de mettre en place une sorte de systême producteur/consommateur mais où la sortie du consommateur réinjecterait sa sortie en entrée du programmes producteur et vice-versa Pas de problême pour piper le producteur et le consommateur (cf. producteur | consommateur => la sortie standard du producteur devient l'entrée standard du consommateur) Mais je ne sais pas comment "boucler la boucle" (cf. le consommateur doit aussi répondre au producteur, cf. la sortie standard du consommateur doit aussi devenir l'entrée standard du producteur) Le but étant de gérer un systême de questions/réponses évoluées mais où la partie réponse pourrait soit provenir d'une personne devant le clavier, soit d'un automate qui simulerait sa présence. A noter que je ne désire pas pas passer par un vrai systême client/serveur car je veux un truc hyper basique qui puissent se lancer en une ligne de commande et qui soit le plus court possible (style de toutes simples commandes comme `producteur | consommateur` ou uniquement `consommateur` si je veux remplacer moi-même le systême producteur quoi ...) De l'autre côté, l'utilisation d'un serveur HTML résoudrait facilement le pb (vu que c'est c'est typiquement fait pour ...) mais j'aimerais bien ne pas avoir à utiliser une énorme massue pour écraser un tout minuscule moustique ... @+ Yannoo |
|
|
00
|
|
|
#2 |
|
Membre régulier
![]() Inscription : mai 2010 Messages : 253 ![]() |
avec un tube nommé ?
|
|
|
10
|
|
|
#3 |
|
Membre Expert
![]() Ingénieur développement logiciels Inscription : octobre 2008 Messages : 1 483 ![]() |
Dans le processus père, avant de forker, tu créé deux pipes. Puis tu fork, et tu ferme les bon bout de chaque pipe dans chaque processus. Le père écrira dans dans le 1er pipe et lira dans le 2ème. Le fils écrira dans le 2ème pipe et lira dans le 1er.
Attention toutefois aux problème de deadlock. Pour bien faire les choses il faut que chaque processus (le père et le fils) fasse une boucle de select() (ou poll(), c'est pareil) pour scruter les deux pipes, et faire ce qu'il convient de faire quand l'un des deux pipes est disponible. |
|
|
20
|
|
|
#4 | ||||
|
Expert Confirmé Sénior
![]() ![]() Frédéric Ingénieur développement logiciels Inscription : février 2006 Messages : 3 533 ![]() |
Salut
Tu ne dis pas si tu es en shell ou en C ou en Python ou en autre chose. Matafan t'a donné une solution C. Voici une solution shell création tubes nommé X et Y P1 Code bash :
P2 Code bash :
__________________
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche. Tout ce qu'un individu reçoit sans rien faire pour l'obtenir, un autre individu a dû travailler pour le produire sans en tirer profit. Tout Pouvoir ne peut distribuer aux uns que ce qu'il a préalablement confisqué à d'autres car on n'accroît pas les biens en les divisant. Quand la moitié d'un peuple croit qu'il ne sert à rien de faire des efforts car l'autre moitié les fera pour elle, et quand cette dernière moitié se dit qu'il ne sert à rien d'en faire car ils bénéficieront à d'autres, cela s'appelle le déclin et la fin d'une nation. Dr. Adrian Rogers, 1931 |
||||
|
|
10
|
|
|
#5 |
|
Nouveau Membre du Club
![]() Yann LE PETITCORPSAnalyste d'exploitation Inscription : avril 2011 Messages : 47 ![]() |
Merci, Matafan et Sve@r
Je vais essayer ça dans la semaine De préférence, ce serait pour être utilisé dans un script-shell (mais si je vois que c'est trop lent à l'execution, je le ferais passer en C) Sve@r, ça ne crée pas un pb s'il n'y a pas systématiquement une réponse après chaque question ? (ce serait bien de ne pas être obligé de devoir systématiquement répondre avant qu'une nouvelle question soit posée => un systême de file d'attente serait sûrement mieux ==> donc à mon avis, je vais le faire directement en C car la solution de Sve@r m'a l'air plus souple à ce niveau) @+ Yannoo |
|
|
00
|
|
|
#6 | |
|
Expert Confirmé Sénior
![]() ![]() Frédéric Ingénieur développement logiciels Inscription : février 2006 Messages : 3 533 ![]() |
Citation:
Exact tu auras plus de souplesse en C qu'en shell...
__________________
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche. Tout ce qu'un individu reçoit sans rien faire pour l'obtenir, un autre individu a dû travailler pour le produire sans en tirer profit. Tout Pouvoir ne peut distribuer aux uns que ce qu'il a préalablement confisqué à d'autres car on n'accroît pas les biens en les divisant. Quand la moitié d'un peuple croit qu'il ne sert à rien de faire des efforts car l'autre moitié les fera pour elle, et quand cette dernière moitié se dit qu'il ne sert à rien d'en faire car ils bénéficieront à d'autres, cela s'appelle le déclin et la fin d'une nation. Dr. Adrian Rogers, 1931 |
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com