Liste des Groupes | Revenir à fcs atari |
/*
* Programme who|wc : compte le nombre d'utilisateurs
*/
#include <stdio.h>
#include <unistd.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 PERE : Il execute "who" */
close(1); /* Fermeture de la sortie standard */
dup(p[1]) /* Duplique la sortie du pere en sortie standard */
close(p[0]); /* L'entree du pere 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 Fils : il execute a nouveau un fork */
pid=fork();
if(pid==0)
{ /* Processus PERE : Il execute "wc" */
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);
}
else if(pid<0)
{
perror("\nFork impossible\n");
}
/* Processus Fils : Attend la fin des deux processus */
close(p[0]); /* L'entree du fils ne sert plus a rien */
close(p[1]); /* La sortie non plus */
while(wait()>=0);
exit(0);
}
Les messages affichés proviennent d'usenet.