Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
4196 connectés 

 


Dernière réponse
Sujet : [C/Unix] Processus en C
Fork Ah oui, j'oubliais : les pipes permettent de faire de la communication inter-process sur une seule et même machine. Pour faire de la communication via le réseau, il fautdrait utiliser les sockets...

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
Fork Ah oui, j'oubliais : les pipes permettent de faire de la communication inter-process sur une seule et même machine. Pour faire de la communication via le réseau, il fautdrait utiliser les sockets...
Fork la commande pipe te renvoie deux descripteurs de fichiers, l'un pour le processus qui envoyer les données dans le tube, l'autre descripteur pour le processus qui les lira.
Comme ce sont des descripteurs de fichiers, tu utilises pour lire et écrire les fonctions standards "read" et "write".
Afin que tes deux processus  partagent le même tube, il faut utiliser la commande pipe AVANT d'utiliser la commande fork.
 
exemple :
 
main()
{
   int tab[2]; // tableau pour les descripteurs créés par "pipe"
   pid_t fils;
 
   pipe(tab);
 
   /* a partir d'ici, le descripteur tab[0] sera utilisé pour lire le tube, et le descripteur tab[1] sera utilisé pour écrire dedans. */
 
   fils=fork(); // création d'un processus fils.
 
   /* Normalement, pour un fonctionnement optimal, le processus fils est celui qui écrit les infos dans le pipe (producteur) et le processus père les reçoit (consommateur). */
 
   if( fils==(pid_t)0)
   {
      // début programme processus fils
      ...      
      write(tab[1], data); // écriture d'infos dans le pipe
      ...
      // fin programme processus fils
      exit(0);
   }
 
   else
   {
      // poursuite du processus père
      ...
      read(tab[0], data); // lecture des infos du pipe
      ...
   }
}
bjbebert Ben oui, un pipe c'est pas mal.
Tu as la fonction 'pipe' qui te donne les 2 descripteurs correspondants (lecture et ecriture).
nikewlas Bonjour,
 
comment fait on pour faire communiquer 2 processus entre-eux (genre un pipe)??
 
merci

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)