Programmation Système Pipe : Faire un mini shell en Python
Bonjour,
Je suis actuellement étudiant en informatique et pour la réalisation d'un mini shell je coince un peu. Je souhaite gérer la communication entre plusieurs processus avec des pipes. J'y arrive pour 1 par exemple ls | more mais plusieurs je coince. Je ne suis pas à la recherche d'une réponse toute faite mais de l'idée expliquer en détail.
Deux processus et un pipe :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
ligne1 = ["ls"]
ligne2 = ["more"]
(r,w)=os.pipe()
fpid = os.fork()
if fpid: #parent
print("1")
os.close(r)
os.dup2(w,1)
os.execvp(ligne1[0],ligne1)
else :#fils
print("2")
os.close(w)
os.dup2(r,0)
os.execvp(ligne2[0],ligne2) |
Code:
1 2 3 4 5
| #creation tableau de pipe
tab=[]
for i in range(2):
(r,w)=os.pipe()
tab.append((r,w)) |
L'idée que j'ai tenté de réaliser c'était de créer un tableau de pipe [(3,4),(5,6)...] dépendant du nombre de pipe (mais bon je pense pas que cela fonctionne ainsi) et d'associer le stdout du premier processus à 3 descripteur du pipe en lecture et le stdin du second processus au descripteur en écriture du pipe 4 ainsi de suite.
Merci d'avance.