Un régulier de la pipe ne peut connecter deux processus interdépendants. Il est créé par un processus et disparaissent lors de la dernière clôture.
Un tube nommé, également appelé FIFO pour son comportement, peut être utilisé pour connecter deux indépendants des processus et existe indépendamment du processus, ce qui signifie qu'il peut exister, même si personne ne l'utilise. Une FIFO est créé à l'aide de l' mkfifo()
fonction de la bibliothèque.
Exemple
de l'écrivain.c
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
int fd;
char * myfifo = "/tmp/myfifo";
/* create the FIFO (named pipe) */
mkfifo(myfifo, 0666);
/* write "Hi" to the FIFO */
fd = open(myfifo, O_WRONLY);
write(fd, "Hi", sizeof("Hi"));
close(fd);
/* remove the FIFO */
unlink(myfifo);
return 0;
}
reader.c
#include <fcntl.h>
#include <stdio.h>
#include <sys/stat.h>
#include <unistd.h>
#define MAX_BUF 1024
int main()
{
int fd;
char * myfifo = "/tmp/myfifo";
char buf[MAX_BUF];
/* open, read, and display the message from the FIFO */
fd = open(myfifo, O_RDONLY);
read(fd, buf, MAX_BUF);
printf("Received: %s\n", buf);
close(fd);
return 0;
}
Remarque: la vérification d'Erreur était omis dans le code ci-dessus pour plus de simplicité.