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 python : Sélectionner tout - Visualiser dans une fenêtre à part
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 python : Sélectionner tout - Visualiser dans une fenêtre à part
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.
Partager