上一篇博客已经介绍了一种进程间通信的方式,但是那只是针对于有血缘关系的进程,即父子进程间的通信,那对于没有血缘关系的进程,那要怎么通信呢?

这就要创建一个有名管道,来解决无血缘关系的进程通信, fifo:

book@ubuntu:~$ mkfifo xwp

book@ubuntu:~$ ls -l myfifo

prw-rw-r-- book book Feb myfifo

mkfifo 既有命令也有函数

#include

#include

int mkfifo(const char *pathname, mode_t mode);

/* fifo_write.c */

#include

#include

#include

#include

#include

#include

#include

void sys_err(char *str, int exitno)

{

perror(str);

exit(exitno);

}

int main(int argc,char *argv[])

{

int fd, len;

char buf[] = "hello world\n";

if(argc < )

{

printf("./app myfifo\n");

exit();

}

fd = open(argv[],O_WRONLY);

if(fd < )

sys_err("open",);

write(fd, buf, strlen(buf));

close(fd);

return ;

}

/* fifo_read */

#include

#include

#include

#include

#include

#include

#include

void sys_err(char *str, int exitno)

{

perror(str);

exit(exitno);

}

int main(int argc,char *argv[])

{

int fd, len;

char buf[] = {};

if(argc < )

{

printf("./app myfifo\n");

exit();

}

fd = open(argv[],O_RDONLY);

if(fd < )

sys_err("open",);

read(fd, buf, sizeof(buf));

write(STDOUT_FILENO, buf, strlen(buf));

close(fd);

return ;

}

操作方法:

分别编译成可执行程序:fifo_write 和 fifo_read

在一个终端下输入 ./fifo_write myfifo

在另一个终端下输入 ./fifo_read myfifo

即可观察到结果

注:

当只写打开FIFO管道时,该FIFO没有读端打开,则open写打开会阻塞。

FIFO内核实现时可以支持双向通信。(pipe单向通信,因为父子进程共享同一个file结构体)

FIFO可以一个读端,多个写端;也可以一个写端,多个读端。

其实fifo指向的还是内核中的缓冲区,只不过他指向所有的内核缓冲区,因此他不是阻塞的,不像pipe只是指向两端,造成阻塞现象

Linux进程间通信之管道&lpar;pipe&rpar;、命名管道&lpar;FIFO&rpar;与信号&lpar;Signal&rpar;

整理自网络 Unix IPC包括:管道(pipe).命名管道(FIFO)与信号(Signal) 管道(pipe) 管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道 ...

Linux 进程间通信之管道&lpar;pipe&rpar;&comma;&lpar;fifo&rpar;

无名管道(pipe) 管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信: 定义函数: int pipe(int f ...

Linux进程间通信(四):命名管道 mkfifo&lpar;&rpar;、open&lpar;&rpar;、read&lpar;&rpar;、close&lpar;&rpar;

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

Linux进程间通信

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 我们在Linux信号基础中已经说明,信号可以看作一种粗糙的进程间通信(IPC, i ...

Linux 进程间通信&lpar;二&rpar; 管道

Linux 进程间通信-管道 进程是一个独立的资源分配单位,不同进程之间的资源是相互独立的,没有关联,不能在一个进程中直接访问另一个进程中的资源.但是,进程不是孤立的,不同的进程之间需要信息的交换以及 ...

linux进程间通信-概述

一 进程间通信有如下的目的: 1.数据传输,一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几M之间:2.共享数据,多个进程想要操作共享数据,一个进程对数据的修改,其他进程应该立刻看到 ...

【转】 Linux进程间通信

一.进程间通信概述进程通信有如下一些目的:A.数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几M字节之间B.共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别 ...

&lpar;转&rpar;Linux进程间通信

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 谢谢nonoob纠错 我们在Linux信号基础中已经说明,信号可以看作一种粗糙的进 ...

Linux进程间通信&lpar;IPC&rpar;

序言 linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的. 而对Unix发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心) ...

随机推荐

每天一个linux命令(6):rmdir 命令

今天学习一下linux中命令: rmdir命令.rmdir是常用的命令,该命令的功能是删除空目录,一个目录被删除之前必须是空的.(注意,rm - r dir命令可代替rmdir,但是有很大危险性.)删 ...

【UML 建模】状态图介绍

1.Statechart Diagram 即状态图,主要用于描述一个对象在其生存期间的动态行为,表现为一个对象所经历的状态序列.引起状态转移的事件(Event).因状态转移而伴随的动作(Action) ...

revit融合

解决了嵌入部分也会布置砖胎膜或土方问题 1.需根据板往相应方向拉伸,创建拉伸体(非实例) 2.根据轮廓创建融合体 3.将两个物体融合 //创建平面 //创建草图平面,文档必须是族文档 Plane pl ...

LFYZ-OJ ID&colon; 1024 火车站

火车过站 问题描述 火车从始发站(称为第1站)开出,在始发站上车的人数为a,然后到达第2站,在第2站有人上.下车,但上.下车的人数相同,因此在第2站开出时(即在到达第3站之前)车上的人数保持为a人.从 ...

FPGA Asynchronous FIFO设计思路

FPGA Asynchronous FIFO设计思路 将一个多位宽,且在不停变化的数据从一个时钟域传递到另一个时钟域是比较困难的. 同步FIFO的指针比较好确定,当FIFO counter达到上限值时 ...

node&period;js 的页面渲染方法ejs

.安装依赖的组件 npm i consolidate -D npm i ejs -D 2.布局服务端 const express = require('express'); const consoli ...

安装ucenter以及单点实现

1.下载ucenter包 最好是utf-8格式2.解压得到4个安装包 3.1)新建一个站点c 把upload中的所有文件复制到站点根目录下中2)访问出现 Please click here to in ...

leetcode ----ARRAY TWOSUM

代码的(判断nums[i]或者是target-nums[i]都可以):

教你用一行Python代码实现并行(转)

教你用一行Python代码实现并行 本文教你通过一行Python实现并行化. Python在程序并行化方面多少有些声名狼藉.撇开技术上的问题,例如线程的实现和GIL,我觉得错误的教学指导才是主要问题. ...

标C编程笔记day05 函数声明、文件读写、联合类型、枚举类型

函数声明:     1.隐式声明:在没有声明的情况下,系统可依据參数类型推断去调用函数(有可能出错)     2.显式声明:声明在被调用之前.如:double add(double,double);  ...

linux fifo通信,linux 进程间通信 之fifo相关推荐

  1. linux socketCAN通信,linux can 总线socket接口测试使用

    最近调试一个sja1000的can驱动,发现到了2.6.36,linux把can总线封装成了网络接口.内核文档里给出了这么修改的原因. 1. Overview / What is Socket CAN ...

  2. 手机和Linux蓝牙通信,Linux下手机与蓝牙的连接配置

    我的设备如下: 电脑:安装ubuntu6.06(6.06版本内核已自带蓝牙模块) 手机:Nokia5500 电脑上装有USB蓝牙适配器 1.配置/etc/bluetooth/hcid.conf # # ...

  3. 手机和Linux蓝牙通信,linux 用蓝牙和手机通信

    加载模块: # modprobe hci_usb # modprobe rfcomm # hciconfig hci0 up # hciconfig hci0 up 查看状况: # hciconfig ...

  4. 命名管道(FIFO) Linux进程进程间的通信之命名管道(FIFO)

    Linux进程进程间的通信之命名管道(FIFO) 命名管道(FIFO),它和一般的管道一样.都是作为中间的邮递员来实现两个进程间的通信交流. 命名管道(FIFO)有几个特点: 1.命名管道(FIFO) ...

  5. Linux 进程通信fifo,Linux 进程通信之FIFO的实现

    FIFO通信(first in first out) FIFO 有名管道,实现无血缘关系进程通信. 创建一个管道的伪文件 a.mkfifo testfifo 命令创建 b.也可以使用函数int mkf ...

  6. Linux 进程通信之FIFO

    FIFO通信(first in first out) FIFO 有名管道,实现无血缘关系进程通信. ----创建一个管道的伪文件 a.mkfifo testfifo 命令创建 b.也可以使用函数int ...

  7. linux fifo 视频,Linux FIFO学习

    FIFO,又称作命名管道(named pipe),它是Linux系统中用于进程间通信的一种方法. FIFO和pipe的区别在于: FIFO在文件系统中有对应的inode,可以通过ls命令查看. sh- ...

  8. linux下进程间管道通信,Linux下进程间通信方式-管道

    本文关键字: linux 管道通信,linux 进程通信方式,无名管道,有名管道 管道是Linux中进程间通信的一种方式,它把一个程序的输出直接连接到另一个程序的输入.Linux的管道主要包括两种:无 ...

  9. linux进程调度算法:分时调度策略、FIFO调度策略、RR调度策略

    原文链接:https://www.cnblogs.com/zhouhbing/p/3904827.html Linux内核的三种调度策略 一 Linux内核的三种调度策略: 1,SCHED_OTHER ...

  10. linux 进程通信之 mmap

    一,管道PIPE 二,FIFO通信 三,mmap通信 创建内存映射区. #include <sys/mman.h> void *mmap(void *addr, size_t length ...

最新文章

  1. vim does not map customized key?
  2. 以GIS面对崛起的城市群
  3. 自定义工具类:导入工具类测试
  4. 用linux命令创建表主键,Linux系统下SQL Server数据库操作
  5. vmware安装centos8步骤
  6. java ++i、i++、i++ + ++i、i++ + i++原理
  7. sql developer Oracle 数据库 用户对象下表及表结构的导入导出
  8. cadence 常见pcb电阻_高速PCB培训手记
  9. ajax传json格式数据
  10. nginx虚拟目录支持PHP,nginx设置虚拟目录
  11. Chrome格式化json
  12. 关于浏览器存储问题理解
  13. yuicompressor java_YUI Compressor
  14. [XJTUSE编译原理] 第三章 上下文无关文法
  15. 数字图像处理(4)——图像复原
  16. Postgresql本地语言环境参数设置(LC_COLLATE,LC_CTYPE)
  17. 面试官:说说你最大的优缺点? (25题汇总版)
  18. android手机wifi快的办法,手机wifi如何设置网速变快(这样设置网速瞬间堪比5G)...
  19. L2-016 愿天下有情人都是失散多年的兄妹(25 分)
  20. 投影仪幕布增益_别再说幕布是花瓶 投影幕布的作用原来这么大

热门文章

  1. 市面上北方水稻居多 国稻种芯:南方盛产水稻去哪里了?
  2. 【Java项目】基于账户服务的收银宝
  3. 【蓝桥杯 2020省赛b组】 前四道填空题
  4. 代码本色 结合牛顿力学
  5. POJ 2359 Questions(约瑟夫环——数学解法)
  6. 2359 - 数字串前缀匹配 ---trie字典树
  7. Linux及windows下常见压缩程序的压缩能力对比
  8. day03【JS基础】JS运算符、条件判断、循环语句、普通函数、 匿名函数、轮播图的实现、JS事件【重点】、页面交互、String 对象、Array 对象、Date 对象、Math 对象、全局函数
  9. C语言练习实例14——质因数分解
  10. 我在 20 年的软件工程师生涯中学到的 20 件事