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.