En C voici un truc du genre, tu peux voir dans l'exemple l'utilisation 
d'un simple echo. Si qui montre l'utilit� m�me d'un "pipe nomm�".
Dans ce cas le masque de permission du pipe nomm� est h�rit� du UID/GID
du process.
On pourrait avoir aussi la possibilit� d'utiliser mkfifo en ligne de 
commande et faire un bete exemple en shell.

Mais bon, je ne sais pas ce que tu veux faire mais les pipes nomm�s 
peuvent servir dans certains cas. Il faut voir ce que tu veux faire
comme application et quelles sont tes buts.

Sinon n'oublie pas les sockets...

N'oublie pas les bibles :

Richard Stevens, UNIX Network Programming, Volume 1, Second Edition: 
Networking APIs: Sockets and XTI, Prentice Hall, 1998, ISBN 0-13-490012-X.

Richard Stevens, UNIX Network Programming, Volume 2, Second Edition: 
Interprocess Communications, Prentice Hall, 1999, ISBN 0-13-081081-9.
(tiens on parle des FIFOs dans celui l� 8-)))

Si tu te lances dans les Sockets, je te conseille aussi cette autre
bible (du m�me auteur postum) :

Richard Stevens, TCP/IP Illustrated, Volume 1: The Protocols, 
Addison-Wesley, 1994, ISBN 0-201-63346-9.

Hope this helps

Alx



#include <unistd.h>
#include <fcntl.h>
#include <stdlib.h>
#include <limits.h>
#include <sys/types.h>
#include <sys/stat.h>
main()
   {
      int rc;
      int fifofd;
      char input[255];
      rc = mkfifo("ungrospipe", S_IRUSR | S_IWUSR);
      if (rc != 0) {
         perror("mkfifo failure");
         exit(EXIT_FAILURE);
      }
      /* Open the FIFO for read. */
      fifofd = open("ungrospipe", O_RDONLY);
      if (fifofd < 0){
         perror("open failure");
         remove("ungrospipe");
         exit(EXIT_FAILURE);
      }
      /* Using the FIFO with a simple echo. */
      rc = system("echo >ungrospipe "
                  "sending a message");
      if (rc != 0) {
         fprintf(stderr, "error on echo %dn", rc);
         remove("ungrospipe");
         exit(EXIT_FAILURE);
      }
      rc = read(fifofd, input, _POSIX_PIPE_BUF);
      if (rc < 0) {
         perror("read failure");
         remove("ungrospipe");
         exit(EXIT_FAILURE");
      }
      puts("Here it is the message :");
      fwrite(input, 1, rc, stdout);   /* Read input from the FIFO. */
      close(fifofd);
      remove("ungrospipe");
      exit(EXIT_SUCCESS);
   }


J-C Hendrickx wrote:

> Merci, mais le man et info ne donnent pas un exemple pratique;
> Si vous avez d�j� utilis� FIFO, ce serait chouette de me
> filer un exemple.
> Pourquoi l'utilise-t-on. Comment. Genre "Hello world"
> Ou bien c'est le monstre du loch Ness ?
> Ou bien j'oublie �a.
> 
> Linux ad fundum.
> 
> 
> --- Message original de Alexandre Dulaunoy le dim 25 mar, 2001 � 00:57:22 +0100 ---
> 
>> On Sat, 24 Mar 2001, Laurent Frisee wrote:
>> 
>> 
>>> J-C Hendrickx wrote:
>>> 
>>> 
>>>> Bonjour,
>>>> 
>>>> Quelqu'un pourrait-il m'�clairer sur ce qu'est et comment
>>>> utiliser un _pipe nomm�_ ?
>>>> J.C.H
>>>> 
>>> 
>>> wi, c'est un moyen de communiquer entre 2 pc sous windows. Si je me
>>> rappelle bien, tu ne peux en cr�er qu'un sur une machine NT mais tu peux
>>> te connecter depuis n'importe quel windows. Je sais pas pour les windows
>>> 2000 et Me.
>>> 
>> 
>> Hein quoi ? un "named pipe" (pipe nomme) est une FIFO. Un pipe n'est pas
>> nomme et il est uniquement utilise dans le cas ou du meme process parent. 
>> Parcontre une FIFO (ou pipe nomme) est aussi half-duplex comme le
>> pipe mais il a l'avantage d'avoir un "path" unix standard ce qui permet de
>> l'atteindre facilement a partir de n'importe quel autre process via un
>> bete open. 
>> 
>> Comment creer un pipe nomme (FIFO), tu utilise l'appel mkfifo (cf. man).
>> Par contre comme c'est half-duplex, il faut souvent creer un pour la
>> lecture et un l'ecriture. 
>> 
>> Laurent je ne vois pas le rapport avec Windows ? Tu ne confonds pas avec
>> les fonctionnalites dans le protocol NetBIOS. 
>> 
>> hope this helps. 
>> 
>> alx
>> ----
>> Alexandre Dulaunoy
>> AD993-RIPE
>> AJDD1-6BONE
>> http://www.foo.be/
>> 
>> 
> 
> 
> [ Soyez pr�cis dans vos sujets svp afin de d�terminer directement  ]
> [ le type de demande...                                            ]
> [ Pour vous (d�s)inscrire, aller sur http://linuxbe.org/ml.php     ]
> [ http://LinuxBe.org              Contact: [EMAIL PROTECTED]  ]


[ Soyez pr�cis dans vos sujets svp afin de d�terminer directement  ]
[ le type de demande...                                            ]
[ Pour vous (d�s)inscrire, aller sur http://linuxbe.org/ml.php     ]
[ http://LinuxBe.org              Contact: [EMAIL PROTECTED]  ]

Répondre à