In computing, a named pipe (also known as a FIFO) is one of the methods for intern-process communication.
- It is an extension to the traditional pipe concept on Unix. A traditional pipe is “unnamed” and lasts only as long as the process.
- A named pipe, however, can last as long as the system is up, beyond the life of the process. It can be deleted if no longer used.
- Usually a named pipe appears as a file, and generally processes attach to it for inter-process communication. A FIFO file is a special kind of file on the local storage which allows two or more processes to communicate with each other by reading/writing to/from this file.
- A FIFO special file is entered into the filesystem by calling mkfifo() in C. Once we have created a FIFO special file in this way, any process can open it for reading or writing, in the same way as an ordinary file. However, it has to be open at both ends simultaneously before you can proceed to do any input or output operations on it.
Creating a FIFO file
In order to create a FIFO file, a function calls i.e. mkfifo is used.
mkfifo() makes a FIFO special file with name pathname. Here mode specifies the FIFO’s permissions. It is modified by the process’s umask in the usual way: the permissions of the created file are (mode & ~umask).
As named pipe(FIFO) is a kind of file, we can use all the system calls associated with it i.e. open, read, write, close.
Example Programs to illustrate the named pipe.
There are two programs that use same FIFO. The program 1 writes first, then reads. The program 2 reads first, then writes. They both keep doing it until terminated.
Program 1(Writes first)
Program 2(Reads First)
Output: Run the two programs simultaneously on two terminals.
This article is contributed by Kishlay Verma. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to email@example.com. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
- C program for pipe in Linux
- C program to demonstrate fork() and pipe()
- pipe() System call
- C program to print a string without any quote (singe or double) in the program
- C program to detect tokens in a C program
- How to compile 32-bit program on 64-bit gcc in C and C++
- How does a C program executes?
- Output of C Program | Set 29
- Program to compute Log n
- OpenMP | Hello World program
- Program error signals
- Program to check if two strings are same or not
- Splint -- A C program verifier
- Write a C program that won't compile in C++
- Program for FCFS Scheduling | Set 1
Improved By : PaarmitaBhargava