Correction TD 3 Exercice 1 #include <stdio.h> #include <stdlib.h> #include <sys
Correction TD 3 Exercice 1 #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <unistd.h> int main(void) { int p[2]; pid_t pid; if (pipe(p) == -1) { perror("pipe"); exit(1); } if ((pid = fork()) == -1) { perror("fork"); exit(1); } if (pid) { close(p[0]); dup2(p[1], STDOUT_FILENO); execlp("ps", "ps", "-uax", NULL); perror("execlp"); exit(1); } close(p[1]); dup2(p[0], STDIN_FILENO); if (pipe(p) == -1) { perror("pipe"); exit(1); } if ((pid = fork()) == -1) { perror("fork"); exit(1); } if (pid) { close(p[0]); dup2(p[1], STDOUT_FILENO); execlp("grep", "grep", "root", NULL); perror("execlp"); exit(1); } close(p[1]); dup2(p[0], STDIN_FILENO); execlp("wc", "wc", "-l", NULL); perror("execlp"); exit(1); } Exercice 2 #include <stdio.h> int pip1[2]; /* descripteurs pipe 1 */ int pip2[2]; /* descripteurs pipe 2 */ int status; int main() { int idfils; char rep[7], mesg[5];/* ouverture tubes */ if(pipe(pip1)){perror("pipe 1");exit(1);} if(pipe(pip2)){perror("pipe 2"); exit(2);}/* création processus */ if((idfils=fork())==-1){perror("fork");exit(3);} if(idfils) {/*le premier tube sert dans le sens père vers filsil est fermé en lecture */ close(pip1[0]);/*le second tube sert dans le sens filsvers pèreil est fermé en écriture*/ close(pip2[1]);/* on envoie un message au fils par le tube */ if(write(pip1[1],"hello",5)!=5){fprintf(stderr,"père: erreur en écriture\n"); exit(4);}/* on attend la réponse du fils par le tube 2 */ if(read(pip2[0],rep,7)!=7){fprintf(stderr,"fils: erreur lecture\n");exit(5);} printf("message du fils: %s\n",rep); wait(&status); else {/*fermeture du tube 1 en écriture */ close(pip1[1]); /* fermeture du tube 2 en lecture */ close(pip2[0]);/* attente d’un message du père */ if(read(pip1[0],mesg,5)!=5) {fprintf(stderr,"fils: erreur lecture\n");exit(6);} printf("la chaine reçue par le fils est: %s\n",mesg);/* envoi d’un message au père*/ if(write(pip2[1],"bonjour",7)!=7) {fprintf(stderr,"fils: erreur ecriture\n"); exit(7);} exit(0)}} uploads/Litterature/ correction-td-3.pdf
Documents similaires
-
12
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Aoû 04, 2021
- Catégorie Literature / Litté...
- Langue French
- Taille du fichier 0.0187MB