命名管道(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

进程间通信之命名管道相关推荐

  1. python命名管道通讯_Python进程间通信的命名管道详解(Windows)

    本文和大家分享的主要是windows系统下,python进程间通信的命名管道相关内容 ,一起来看看吧,希望对大家学习python有所帮助. 在 Windows 上的命名管道主要是通过调用win32 a ...

  2. 【Linux系统编程】进程间通信之命名管道

    00. 目录 文章目录 00. 目录 01. 命名管道概述 02. 命名管道创建 03. 命名管道特性 04. 命名管道非阻塞 05. 附录 01. 命名管道概述 无名管道,由于没有名字,只能用于亲缘 ...

  3. Linux进程间通信——使用命名管道

    在前一篇文章-- Linux进程间通信--使用匿名管道中,我们看到了如何使用匿名管道来在进程之间传递数据,同时也看到了这个方式的一个缺陷,就是这些进程都由一个共同的祖先进程启动,这给我们在不相关的的进 ...

  4. 【Linux】进程间通信 - 匿名/命名管道与System V共享内存

    目录 前言 一.管道 0.什么是管道 1).管道的概念 2).管道的本质 3).管道指令: "|" 1.匿名管道 1).如何创建匿名管道 2).如何使用匿名管道进行通信 3).匿名 ...

  5. Linux系统编程——进程间通信:命名管道(FIFO)

    命名管道的概述 无名管道,由于没有名字,只能用于亲缘关系的进程间通信(更多详情,请看<无名管道>).为了克服这个缺点,提出了命名管道(FIFO),也叫有名管道.FIFO 文件. 命名管道( ...

  6. python 命名管道_详解Python进程间通信之命名管道

    管道是一种简单的FIFO通信信道,它是单向通信的. 通常启动进程创建一个管道,然后这个进程创建一个或者多个进程子进程接受管道信息,由于管道是单向通信,所以经常需要创建两个管道来实现双向通信. 命名管道 ...

  7. 管道实现进程间通信之命名管道

    进程间通信管道篇之命名管道 文章目录 1.1命名管道 1.2命名管道的创建 1.3命名管道和匿名管道的区别 代码演示(用命名管道实现进程间通信) 2.1 通过进程间通信将客户端发送的字符串转化为命令让 ...

  8. linux进程间通信:命名管道FIFO

    文章目录 FIFO 通信特点 系统调用接口 应用 拥有亲缘关系之间的进程通信 非亲缘关系进程之间的通信 总结 FIFO 通信特点 FIFO文件有文件名 可以像普通文件一样存储在文件系统之中 可以像普通 ...

  9. 进程间通信(5) 命名管道2 不同机器通信

    不同机器的通信我一直没解决,现记录下来,以后再看,也欢迎指点! 看资料说是先connectipc一下. 结果我connectIpc错误. 执行cmd命令"net use \192.168.2 ...

最新文章

  1. python爬虫,生成文件速度追不上已经爬取文件的生成速度。
  2. 视频和音频播放的演示最简单的例子9:SDL2广播PCM
  3. WIFI只sta和ap建立连接的过程
  4. 怎样查看rpm安装包的安装路径
  5. boost::uuids::entropy_error相关的测试程序
  6. Vue父子组件之间的传值
  7. Flask知识点回顾以及重点内容
  8. 少儿是先学计算机 还是学机器人,机器人学习和少儿编程有什么区别?
  9. 没有必要学完oldboy课程再找工作,现在就可以试试
  10. SpringBoot --thymeleaf(资源文件css、js的引入)
  11. Teechart图表教程:Teechart的功能简介
  12. php expecting,php – 解析错误:语法错误,意外的’.’,expecting’,’或’;’
  13. element-ui上传excel表格,展示在微信小程序中
  14. 按键精灵--多点找形状介绍
  15. 反编译 逆向工具集合
  16. 三维动画设计与制作【2】
  17. 记录一次 Liferay 7.X 中弹出窗口的简单使用
  18. C#调用TSC条码打印机打印二维码
  19. Android - ReactNative Debug 技巧
  20. 使用spark来处理CSV文件数据

热门文章

  1. 剖析 Laravel 计划任务--事件属性
  2. Go -- 配置监控系统
  3. 网上银行跨行转账收费最高相差25倍 省钱有窍门
  4. 学了指针没学动态内存一切都白搭!C语言基础教程之内存管理
  5. Identity Mappings in Deep Residual Networks
  6. 行意天下正文 Android Day02-Android中单元测试(junit测试)monkey测试
  7. 使用 Telnet 仿冒任意邮件
  8. [iOS]过渡动画之高级模仿 airbnb
  9. rotate.js实现图片旋转 (chrome,IE,firefox都可以实现)
  10. 一天一个命令--ifconfig