search
HomeSystem TutorialLINUXLinux Named Pipes (FIFO): A simple yet powerful way to communicate between processes

Linux Named Pipes (FIFO): A simple yet powerful way to communicate between processes

Feb 11, 2024 pm 09:36 PM
linuxlinux tutoriallinux systemlinux commandshell scriptembeddedlinuxGetting started with linuxlinux learning

Linux system is an operating system that supports concurrent execution of multi-tasks. It can run multiple processes at the same time, thereby improving system utilization and efficiency. However, if data exchange and collaboration are required between these processes, some inter-process communication (IPC) methods need to be used, such as signals, message queues, shared memory, semaphores, etc. Among them, the famous pipe (FIFO) is a relatively simple and powerful IPC method. It allows two or more processes to transmit data through a file without caring about the content and format of the file. This article will introduce the blocking and non-blocking reading and writing methods of famous pipes (FIFO) in Linux systems, including the creation, opening, reading, writing, closing and deletion of famous pipes.

Linux Named Pipes (FIFO): A simple yet powerful way to communicate between processes

//Writing process

#include

#include

#include

#include

#include

#include

#define FIFO_NAME “/tmp/myfifo”

main()

{

int fd;

char w_buf[50];

int w_num;

// If fifo already exists, use it directly, otherwise create it

if((mkfifo(FIFO_NAME,0777)

{

printf(“cannot create fifo…\n”);

exit(1);

}

//Open fifo in blocking write-only mode

fd=open(FIFO_NAME,O_WRONLY);

w_num=write(fd,”abcdg\0″,6);

printf(“%d\n”,w_num);

}

//Reading process

#include

#include

#include

#include

#define FIFO_NAME “/tmp/myfifo”

main()

{

char r_buf[50];

int fd;

int r_num;

// If fifo already exists, use it directly, otherwise create it

if((mkfifo(FIFO_NAME,0777)

{

printf(“cannot create fifo…\n”);

exit(1);

}

//Open fifo in blocking read-only mode

fd=open(FIFO_NAME,O_RDONLY);

if(fd==-1)

{

printf(“open %s for read error\n”);

exit(1);

}

// Enter a string through the keyboard, and then write it to the fifo until "exit" is entered

r_num=read(fd,r_buf,6);

printf(” %d bytes read:%s\n”,r_num,r_buf);

unlink(FIFO_NAME);//Delete fifo

}

1. The writing process is blocked and the reading process is blocked.

Run the writing process first (blocked), then run the reading process, everything is normal.

Run the reading process first (blocked), then run the writing process, everything is normal.

2. The writing process is blocked and the reading process is non-blocking.

Just change the code fd=open(FIFO_NAME,O_RDONLY | O_NONBLOCK), similar to the following.

Run the writing process first (blocked), then run the reading process, everything is normal.

Run the reading process first, and the program crashes directly (Segmentation fault (core dumped)). It is quite natural when you think about it. You have nothing to read and you don’t want to wait.

3. The writing process is non-blocking and the reading process is blocking.

Run the writing process first, the open call will return -1, and the open fails.

Run the reading process first (blocked), then run the writing process, everything is normal.

4. The writing process is non-blocking and the reading process is non-blocking.

In fact, it is an abnormal situation where half of each of the above 2 and 3 categories are taken.

Also, we can see through the ls -la command in the /tmp directory that the size of the pipe file myfifo is always 0. This is because although the FIFO file exists in the file system, the contents of the FIFO are stored in memory. , so the file size is always 0.

This article introduces the blocking and non-blocking reading and writing methods of famous pipes (FIFO) in Linux systems, including the creation, opening, reading, writing, closing and deletion of famous pipes. By understanding and mastering this knowledge, we can better use famous pipes (FIFO) to implement inter-process communication and improve system performance and reliability. Of course, there are many other features and usages of famous pipes (FIFO) in Linux systems, which require us to continue to learn and explore. I hope this article can bring you some inspiration and help.

The above is the detailed content of Linux Named Pipes (FIFO): A simple yet powerful way to communicate between processes. For more information, please follow other related articles on the PHP Chinese website!

Statement
This article is reproduced at:良许Linux教程网. If there is any infringement, please contact admin@php.cn delete
What are Linux operations?What are Linux operations?Apr 13, 2025 am 12:20 AM

The core of the Linux operating system is its command line interface, which can perform various operations through the command line. 1. File and directory operations use ls, cd, mkdir, rm and other commands to manage files and directories. 2. User and permission management ensures system security and resource allocation through useradd, passwd, chmod and other commands. 3. Process management uses ps, kill and other commands to monitor and control system processes. 4. Network operations include ping, ifconfig, ssh and other commands to configure and manage network connections. 5. System monitoring and maintenance use commands such as top, df, du to understand the system's operating status and resource usage.

Boost Productivity with Custom Command Shortcuts Using Linux AliasesBoost Productivity with Custom Command Shortcuts Using Linux AliasesApr 12, 2025 am 11:43 AM

Introduction Linux is a powerful operating system favored by developers, system administrators, and power users due to its flexibility and efficiency. However, frequently using long and complex commands can be tedious and er

What is Linux actually good for?What is Linux actually good for?Apr 12, 2025 am 12:20 AM

Linux is suitable for servers, development environments, and embedded systems. 1. As a server operating system, Linux is stable and efficient, and is often used to deploy high-concurrency applications. 2. As a development environment, Linux provides efficient command line tools and package management systems to improve development efficiency. 3. In embedded systems, Linux is lightweight and customizable, suitable for environments with limited resources.

Essential Tools and Frameworks for Mastering Ethical Hacking on LinuxEssential Tools and Frameworks for Mastering Ethical Hacking on LinuxApr 11, 2025 am 09:11 AM

Introduction: Securing the Digital Frontier with Linux-Based Ethical Hacking In our increasingly interconnected world, cybersecurity is paramount. Ethical hacking and penetration testing are vital for proactively identifying and mitigating vulnerabi

How to learn Linux basics?How to learn Linux basics?Apr 10, 2025 am 09:32 AM

The methods for basic Linux learning from scratch include: 1. Understand the file system and command line interface, 2. Master basic commands such as ls, cd, mkdir, 3. Learn file operations, such as creating and editing files, 4. Explore advanced usage such as pipelines and grep commands, 5. Master debugging skills and performance optimization, 6. Continuously improve skills through practice and exploration.

What is the most use of Linux?What is the most use of Linux?Apr 09, 2025 am 12:02 AM

Linux is widely used in servers, embedded systems and desktop environments. 1) In the server field, Linux has become an ideal choice for hosting websites, databases and applications due to its stability and security. 2) In embedded systems, Linux is popular for its high customization and efficiency. 3) In the desktop environment, Linux provides a variety of desktop environments to meet the needs of different users.

What are the disadvantages of Linux?What are the disadvantages of Linux?Apr 08, 2025 am 12:01 AM

The disadvantages of Linux include user experience, software compatibility, hardware support, and learning curve. 1. The user experience is not as friendly as Windows or macOS, and it relies on the command line interface. 2. The software compatibility is not as good as other systems and lacks native versions of many commercial software. 3. Hardware support is not as comprehensive as Windows, and drivers may be compiled manually. 4. The learning curve is steep, and mastering command line operations requires time and patience.

Is Linux hard to learn?Is Linux hard to learn?Apr 07, 2025 am 12:01 AM

Linuxisnothardtolearn,butthedifficultydependsonyourbackgroundandgoals.ForthosewithOSexperience,especiallycommand-linefamiliarity,Linuxisaneasytransition.Beginnersmayfaceasteeperlearningcurvebutcanmanagewithproperresources.Linux'sopen-sourcenature,bas

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Atom editor mac version download

Atom editor mac version download

The most popular open source editor

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Powerful PHP integrated development environment

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

WebStorm Mac version

WebStorm Mac version

Useful JavaScript development tools

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft