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

  FORUM HardWare.fr
  Programmation

  [C/Unix] Processus en C

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C/Unix] Processus en C

n°84016
nikewlas
Posté le 23-12-2001 à 22:49:47  profilanswer
 

Bonjour,
 
comment fait on pour faire communiquer 2 processus entre-eux (genre un pipe)??
 
merci

mood
Publicité
Posté le 23-12-2001 à 22:49:47  profilanswer
 

n°84025
bjbebert
Posté le 23-12-2001 à 23:59:31  profilanswer
 

Ben oui, un pipe c'est pas mal.
Tu as la fonction 'pipe' qui te donne les 2 descripteurs correspondants (lecture et ecriture).

n°84040
Fork
Posté le 24-12-2001 à 09:43:49  profilanswer
 

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
      ...
   }
}

n°84041
Fork
Posté le 24-12-2001 à 09:44:45  profilanswer
 

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...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [C/Unix] Processus en C

 

Sujets relatifs
[ C / Unix ] Séparation commande arguments dans une chaîne.Quelqu'un connait-il le SGBD Mapper (sous Unix) ?
Extraire les mails d'une mbox sous unix[UNIX] .. Ecrire en couleur sur le shell?
[ JAVA ] sous UNIX message bizarre.c/c++ et les processus
Shell UNIX : Aidez moi SVP Faire un ls -r en script shellSVG et Netscape 4.7 sous Unix
Je recherche une url ou un bouquin sur les librairies XRT pour Unix...Equivalent sous Win 2000 du cron Unix ?
Plus de sujets relatifs à : [C/Unix] Processus en C


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