c++ 实现linux命名管道
在Linux中,命名管道是一种特殊的文件类型,可以用于进程间通信。下面是一个简单的C++程序,演示如何使用命名管道:
#include <iostream>
#include <fstream>
#include <unistd.h>
using namespace std;
int main()
{
// 创建命名管道
const char* fifo = "/tmp/myfifo";
mkfifo(fifo, 0666);
// 打开管道
ifstream input(fifo);
ofstream output(fifo);
// 写入数据到管道
output << "Hello, world!" << endl;
// 从管道读取数据
string message;
input >> message;
cout << message << endl;
// 关闭管道
input.close();
output.close();
unlink(fifo);
return 0;
}
在这个程序中,我们使用了mkfifo()函数创建了一个名为/tmp/myfifo的命名管道。然后,我们使用ifstream和ofstream类打开了这个管道。ofstream类用于写入数据,ifstream类用于读取数据。
接下来,我们向管道中写入了一条消息。然后,我们从管道中读取了这条消息,并将它输出到控制台。
最后,我们关闭了管道,并使用unlink()函数删除了它。
需要注意的是,使用命名管道进行进程间通信时,必须保证一端写入数据时,另一端正在读取数据,否则会发生阻塞。因此,建议使用多线程或多进程来实现进程间通信。
原文地址: https://www.cveoy.top/t/topic/sFT 著作权归作者所有。请勿转载和采集!