एक नियमित पाइप केवल दो संबंधित प्रक्रियाओं को जोड़ सकता है। यह एक प्रक्रिया द्वारा बनाया गया है और अंतिम प्रक्रिया के बंद होने पर यह गायब हो जाएगा।
एक नामित पाइप , जिसे इसके व्यवहार के लिए एक FIFO भी कहा जाता है, का उपयोग दो असंबंधित प्रक्रियाओं को जोड़ने और प्रक्रियाओं के स्वतंत्र रूप से मौजूद होने के लिए किया जा सकता है; इसका अर्थ है कि यदि कोई इसका उपयोग नहीं कर रहा है तो भी यह मौजूद हो सकता है। mkfifo()
लाइब्रेरी फ़ंक्शन का उपयोग करके एक FIFO बनाया जाता है।
उदाहरण
writer.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;
}
नोट: त्रुटि जाँच उपरोक्त कोड से सरलता के लिए छोड़ दी गई थी।
ls | grep ".o"
? शायद आप जो करते हैं उसका थोड़ा और स्पष्टीकरण मदद करेगा ...