以下内容源于朱有鹏《物联网大讲堂》的课程学习整理,如有侵权,请告知删除。

一、管道

1、管道(无名管道)

(1)管道通信的原理:内核维护的一块内存,有读端和写端(管道是单向通信的);

(2)管道通信的方法:父进程创建管道后fork子进程,子进程继承父进程的管道fd。

(3)管道通信的限制:只能在父子进程间通信、半双工。

(4)管道通信的函数:pipe、write、read、close。

2、有名管道(fifo)

(1)有名管道的原理:实质也是内核维护的一块内存,表现形式为一个有名字的文件。

(2)有名管道的使用方法:固定一个文件名,2个进程分别使用mkfifo创建fifo文件,然后分别open打开获取到fd,然后一个读一个写。

(3)管道通信限制:半双工(注意不限父子进程,任意2个进程都可)。

(4)管道通信的函数:mkfifo、open、write、read、close

二、SystemV IPC介绍

1、SystemV IPC的基本特点

(1)系统通过一些专用API来提供SystemV IPC功能;

(2)包含:信号量、消息队列、共享内存;

(3)其实质也是内核提供的公共内存;

2、消息队列

(1)本质上是一个队列,队列可以理解为(内核维护的一个)FIFO;

(2)工作时A和B2个进程进行通信,A向队列中放入消息,B从队列中读出消息。

3、信号量

(1)实质就是个计数器(其实就是一个可以用来计数的变量,可以理解为int a);

(2)通过计数值来提供互斥和同步。

4、共享内存

(1)大片内存直接映射;

(2)类似于LCD显示时的显存用法

5、剩余的2类IPC

(1)信号

(2)Unix域套接字:socket

Linux进程全解12——lIPC机制之管道,SystemV IPC介绍相关推荐

  1. Linux进程全解11——进程间通信(IPC)概述

    以下内容源于朱有鹏<物联网大讲堂>的课程学习整理,如有侵权,请告知删除. 1.为什么需要进程间通信? (1)进程间通信(IPC) 指的是2个任意进程之间的通信. (2)同一个进程在一个地址 ...

  2. linux应用编程和网络编程-3.4.linux进程全解- 父子关系 exec system函数

    程序的开始和结束 编译链接时的引导代码(构建执行环境)调用main函数 ①编译链接时的链接器:将编译器中引导代码给连接进去和应用程序一起构成最终的可执行程序. ②运行时的加载器:将这个程序加载到内存中 ...

  3. Linux进程全解10——守护进程

    以下内容源于朱有鹏<物联网大讲堂>的课程学习整理,如有侵权,请告知删除. 一.守护进程介绍 1.进程查看命令ps ps -ajx偏向显示各种有关的ID号: ps -aux偏向显示进程各种占 ...

  4. Linux进程全解8——exec 族函数

    以下内容源于朱有鹏<物联网大讲堂>的课程学习整理,如有侵权,请告知删除. 1.为什么需要exec函数? (1)fork子进程是为了执行新程序 fork创建子进程后,子进程和父进程同时被OS ...

  5. Linux进程全解7——父进程wait / waitip回收子进程

    以下内容源于朱有鹏<物联网大讲堂>的课程学习整理,如有侵权,请告知删除. 一.wait介绍 1.wait的工作原理 (1)子进程结束时,系统向其父进程发送SIGCHILD信号: (2)父进 ...

  6. Linux进程全解6——进程的诞生和消亡

    以下内容源于朱有鹏<物联网大讲堂>的课程学习整理,如有侵权,请告知删除. 1.进程的诞生 (1)进程0和进程1 进程0,是操作系统在启动过程中,由内核一点点构建起来: 内核态下的进程1,是 ...

  7. Linux进程全解9——进程状态、system函数、进程间的关系

    以下内容源于朱有鹏<物联网大讲堂>的课程学习整理,如有侵权,请告知删除. 1.进程的5种状态 (1)就绪态 这个进程当前所有运行条件就绪,只要得到CPU时间就能直接运行. (2)运行态 就 ...

  8. Linux进程全解5——父子进程对文件的操作

    以下内容源于朱有鹏<物联网大讲堂>的课程学习,如有侵权,请告知删除. 1.子进程继承父进程中打开的文件 (1)上下文:父进程先用open打开一个文件得到fd,然后再fork创建子进程,之后 ...

  9. Linux进程全解4——fork创建子进程

    以下内容源于朱有鹏<物联网大讲堂>课程的学习整理,如有侵权,请告知删除. 1.为什么要创建子进程? (1)每一次程序的运行都需要一个进程: (2)多进程实现宏观上的并行. 2.fork的内 ...

最新文章

  1. ASP.NET存取图片到数据库
  2. eclipse 怎么关闭 show children
  3. 【回文字符串】 最长回文子串O(N) Manacher算法
  4. 华为机试HJ10:字符个数统计
  5. 顺序栈基本操作代码实现
  6. 变量之八大基本数据类型#基本数据类型相互转换#基本数据类型与String字符串间转换
  7. java随机生成中文姓名,性别,Email,手机号,住址 等
  8. pdf加水印的方法,pdf如何加水印?
  9. 基于Paddlehub实现的秒换证件照底色
  10. 爬虫教程( 3 ) --- 手机 APP 数据抓取
  11. python股票涨停_Python与量化投资-股票复盘工具-2018-02-02
  12. 学习hutool源码TreeUtil.build()得到了什么
  13. 蓝桥杯 BFS 迷宫寻宝
  14. 阿里云无影研发负责人任晋奎:端云技术创新,打造全新用户体验
  15. linux常用命令-修改主机名
  16. springboot明文密码加密解密
  17. 如何使用ipv6格式的url访问HTTP服务器
  18. ADS使用教程(持续更新)
  19. FusionCharts_API_中文帮助文档!
  20. 老齐python-基础2(字符串)

热门文章

  1. grunt之Gruntfile(1)
  2. hdu2570 迷瘴
  3. [原创]Enterprise Architecture V7.5 C++代码生成时,头文件中函数声明没有注释,CPP中函数定义却有注释。...
  4. 昨天7月21号,笑笑又生病了
  5. Sandy引擎学习笔记:摄影机
  6. Django中使用Pagination的分页范例源码
  7. docker registry v2与harbor的搭建
  8. Weblogic的管理服务器与受管服务器
  9. ehcache memcache redis 三大缓存男高音
  10. [转载]C#异步委托的用法 .