J'écris un programme qui enchaîne simplement 3 programmes, etc. "ls | sort | wc". J'ai regardé à travers les autres messages que j'ai trouvé sur google à propos de plusieurs pipes mais je n'arrive toujours pas à comprendre ce que j'ai fait de mal. Été bloqué sur cela pendant un moment. Je crois que mon programme est logiquement correct, mais pour une raison quelconque, il ne fonctionne pas. Qu'est-ce que je rate?Collé sur l'utilisation de plusieurs tuyaux dans C
pipe(pipe1);
pipe(pipe2);
pid = fork();
if(pid > 0){
close(pipe2[1]);
dup2(pipe2[0], 0);
execlp(argv[3], argv[3], NULL);
}
else if(pid == 0){
pid2 = fork();
if(pid2 == 0){
close(pipe1[0]);
dup2(pipe1[1], 1);
execlp(argv[1], argv[1], NULL);
}
else if(pid2 > 0){
close(pipe1[1]);
dup2(pipe1[0], 0);
close(pipe2[0]);
dup2(pipe2[1], 1);
execlp(argv[2], argv[2], NULL);
}
}
Comment votre look commande? – Downvoter
Je cours de la ligne de commande et je l'ai juste pris 3 arguments, ainsi ce sera ./programname ls sort wc. La sortie ne montre rien, mais ne sort pas, donc je suppose qu'il y a une boucle infinie quelque part parce que j'ai en quelque sorte foiré ma connexion de tuyau? – ryye