Soyez le premier à donner votre avis sur cette source.
Vue 41 488 fois - Téléchargée 737 fois
/**********************************************************/ /**********************************************************/ /*PROGRAMME SUR L'UTILISATION DE PIPES/TUBES ET DE FORK() */ /**********************************************************/ /*But : Ecrire dans un pipe/tube de communication une url */ /*(adresse internet) qui devra être lancée a l'aide de */ /*lynx par un autre processus */ /**********************************************************/ #include <unistd.h> #include <stdlib.h> #include <stdio.h> #include <sys/wait.h> int fils1(), fils2(); int fd[2]; /**********************************/ /* fils 1 : Ecriture dans le tube */ /**********************************/ int fils1() { char urli[100]; close(fd[0]); printf("Saisir une url :\n"); scanf("%s", urli); write(fd[1], &urli, 100); close(fd[1]); exit(0); } /******************************************************/ /* fils 2 : Reception des données à la sortie du tube */ /* et utilisation à travers lynx */ /******************************************************/ int fils2() { char urlo[100]; close(fd[1]); read(fd[0], &urlo, 100); printf("lynx --> %s\n", urlo); close(fd[0]); execl( "/usr/bin/lynx", "lynx", urlo, 0); fprintf (stderr, "execl s'est mal passé...\n"); exit(0); } /***********************/ /* Fonction Principale */ /***********************/ int main() { /* Processus Pere */ int s, i; if (pipe(fd) != 0) /* fd devient descripteur de fichier */ { fprintf(stderr,"Problemes dans l'ouverture de Pipe \n"); exit(1); } /* Lancement d'un fils */ if ( fork() == 0 ) { /* Processus Fils 1 */ fils1(); } /* Lancement d'un fils */ if ( fork() == 0 ) { /* Processus Fils 2 */ fils2(); } close(fd[0]); close(fd[1]); fprintf(stderr, "attente de la fin des processus!\n"); i=wait(&s); i=wait(&s); printf("fin du programme\n"); exit(EXIT_SUCCESS); }
Par contre peu être qu'un petit laïus au début aiderait a la compréhension.
Le code est sympa mais il faudrait peut être que tu utilise des variables explicites pour que le code soit plus lisible et surtout plus simple à comprendre...
Voilà sinon c'est sympa.
Woot
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.