进程间通信之命名管道
命名管道(FIFO)是进程间通信的一种方式。
API:
int mkfifo(const char *pathname, mode_t mode);
DEMO:
// 写进程 int main(int argc, char **argv) {char filename[] = "/tmp/my_fifo";if (mkfifo(filename, 0777) < 0) {perror("mkfifo error");exit(1);}int fd = open(filename, O_WRONLY);char buffer[128] = "hello world";write(fd, buffer, strlen(buffer));printf("write done\n");return 0; }// 读进程 int main(int argc, char **argv) {char filename[] = "/tmp/my_fifo";int fd = open(filename, O_RDONLY);char buffer[128];int n = read(fd, buffer, 128);buffer[n] = '\0';printf("input is : %s\n", buffer);return 0; }
两个地方需要注意:
1. mkfifo会在/tmp目录下创建文件my_fifo
2. 读进程open之前,写进程被阻塞
(it has to be open at both ends simultaneously before you can proceed to do any input or output operations on it.)
与管道相比,命名管道可用于任意两个进程间的通信。
转载于:https://www.cnblogs.com/gattaca/p/6547580.html
进程间通信之命名管道相关推荐
- python命名管道通讯_Python进程间通信的命名管道详解(Windows)
本文和大家分享的主要是windows系统下,python进程间通信的命名管道相关内容 ,一起来看看吧,希望对大家学习python有所帮助. 在 Windows 上的命名管道主要是通过调用win32 a ...
- 【Linux系统编程】进程间通信之命名管道
00. 目录 文章目录 00. 目录 01. 命名管道概述 02. 命名管道创建 03. 命名管道特性 04. 命名管道非阻塞 05. 附录 01. 命名管道概述 无名管道,由于没有名字,只能用于亲缘 ...
- Linux进程间通信——使用命名管道
在前一篇文章-- Linux进程间通信--使用匿名管道中,我们看到了如何使用匿名管道来在进程之间传递数据,同时也看到了这个方式的一个缺陷,就是这些进程都由一个共同的祖先进程启动,这给我们在不相关的的进 ...
- 【Linux】进程间通信 - 匿名/命名管道与System V共享内存
目录 前言 一.管道 0.什么是管道 1).管道的概念 2).管道的本质 3).管道指令: "|" 1.匿名管道 1).如何创建匿名管道 2).如何使用匿名管道进行通信 3).匿名 ...
- Linux系统编程——进程间通信:命名管道(FIFO)
命名管道的概述 无名管道,由于没有名字,只能用于亲缘关系的进程间通信(更多详情,请看<无名管道>).为了克服这个缺点,提出了命名管道(FIFO),也叫有名管道.FIFO 文件. 命名管道( ...
- python 命名管道_详解Python进程间通信之命名管道
管道是一种简单的FIFO通信信道,它是单向通信的. 通常启动进程创建一个管道,然后这个进程创建一个或者多个进程子进程接受管道信息,由于管道是单向通信,所以经常需要创建两个管道来实现双向通信. 命名管道 ...
- 管道实现进程间通信之命名管道
进程间通信管道篇之命名管道 文章目录 1.1命名管道 1.2命名管道的创建 1.3命名管道和匿名管道的区别 代码演示(用命名管道实现进程间通信) 2.1 通过进程间通信将客户端发送的字符串转化为命令让 ...
- linux进程间通信:命名管道FIFO
文章目录 FIFO 通信特点 系统调用接口 应用 拥有亲缘关系之间的进程通信 非亲缘关系进程之间的通信 总结 FIFO 通信特点 FIFO文件有文件名 可以像普通文件一样存储在文件系统之中 可以像普通 ...
- 进程间通信(5) 命名管道2 不同机器通信
不同机器的通信我一直没解决,现记录下来,以后再看,也欢迎指点! 看资料说是先connectipc一下. 结果我connectIpc错误. 执行cmd命令"net use \192.168.2 ...
最新文章
- python爬虫,生成文件速度追不上已经爬取文件的生成速度。
- 视频和音频播放的演示最简单的例子9:SDL2广播PCM
- WIFI只sta和ap建立连接的过程
- 怎样查看rpm安装包的安装路径
- boost::uuids::entropy_error相关的测试程序
- Vue父子组件之间的传值
- Flask知识点回顾以及重点内容
- 少儿是先学计算机 还是学机器人,机器人学习和少儿编程有什么区别?
- 没有必要学完oldboy课程再找工作,现在就可以试试
- SpringBoot --thymeleaf(资源文件css、js的引入)
- Teechart图表教程:Teechart的功能简介
- php expecting,php – 解析错误:语法错误,意外的’.’,expecting’,’或’;’
- element-ui上传excel表格,展示在微信小程序中
- 按键精灵--多点找形状介绍
- 反编译 逆向工具集合
- 三维动画设计与制作【2】
- 记录一次 Liferay 7.X 中弹出窗口的简单使用
- C#调用TSC条码打印机打印二维码
- Android - ReactNative Debug 技巧
- 使用spark来处理CSV文件数据
热门文章
- 剖析 Laravel 计划任务--事件属性
- Go -- 配置监控系统
- 网上银行跨行转账收费最高相差25倍 省钱有窍门
- 学了指针没学动态内存一切都白搭!C语言基础教程之内存管理
- Identity Mappings in Deep Residual Networks
- 行意天下正文 Android Day02-Android中单元测试(junit测试)monkey测试
- 使用 Telnet 仿冒任意邮件
- [iOS]过渡动画之高级模仿 airbnb
- rotate.js实现图片旋转 (chrome,IE,firefox都可以实现)
- 一天一个命令--ifconfig