Liste des Groupes | Revenir à fcs atari |
Voici le code modifié:Oui, je suis d'accord. C'est équivalent. Mais ça n'est pas ce que
/* * Programme who|wc : compte le nombre d'utilisateurs */ #include <stdio.h>
#include <unistd.h> #include <stdlib.h>
void main(void); int p[2]; /* Identificateurs des canaux de communication */
void main()
{ int pid; /* Identificateur des processus */ if(pipe(p)!=0)
{ perror("\nCreation d'un canal impossible\n");
exit(1);
}
pid=fork();
if(pid==0)
{ /* Processus FILS : Il execute "who" */
close(1); /* Fermeture de la sortie standard */
dup(p[1]); /* Duplique la sortie du fils en sortie standard */
close(p[0]); /* L'entree du fils ne sert plus a rien */
close(p[1]); /* La sortie non plus */
execlp("who","who",NULL);
}
else if(pid<0)
{ perror("\nFork impossible\n");
}
/* Processus Père pas besoin de fork c'est stupide pour faire juste who|wc si on n'a pas besoin d'attendre et de faire autre chose*/
close(0); /* Fermeture de l'entree standard */
dup(p[0]); /* Duplique l'entree du pere en entree standard */
close(p[0]); /* L'entree du pere ne sert plus a rien */
close(p[1]); /* La sortie non plus */
execlp("wc","wc",NULL);
printf("semble que quelque chose s'est mal passé!\n");
exit(1);
}
Les messages affichés proviennent d'usenet.