Liste des Groupes | Revenir à fcs atari |
c'est correcte, je suppose que tu as fait exprès d'attendre si par exemple tu veux faire autre chose après sinon c'est compliqué pour rien. Bon ce n'est pas ce que tu nous avais vendu, je suis déçu, j'attendais l'utilisation de threads comme tu l'avais annoncé ici ce n'est pas du tout le cas, c'est juste une redirection des entrée sortie pour singer le shell, les fonctions execlp() clôturent le thread, il n'y a aucun multitâche là dedans. Par contre cela illustre bien les redirections que l'on peut faire en Unix
/*
* 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.