一 进程间通信

  1.1. linux内核提供多种进程间通信机制

    a. 无名管道和有名管道

    b. SystemV IPC:信号量、消息队列、共享内存

    c. Socket域套接字

    d. 信号

  1.2. 无名管道和有名管道

    1.2.1. 管道(无名管道)

      a. 管道通信的原理:内核维护的一块内存,有读端和写端(管道是单向通信的)
      b. 管道通信的方法:父进程创建管理后fork子进程,子进程继承父进程的管道fd
      c. 管道通信的限制:只能在父子进程间通信、半双工
      d. 管道通信的函数:pipe、write、read、close
    1.2.2. 有名管道(fifo)
      a. 有名管道的原理:实质也是内核维护的一块内存,表现形式为一个有名字的文件
      b. 有名管道的使用方法:固定一个文件名,2个进程分别使用mkfifo创建fifo文件,然后分别open打开获取到fd,然后一个读一个写
      c. 管道通信限制:半双工(注意不限父子进程,任意2个进程都可)
      d. 管道通信的函数:mkfifo、open、write、read、close

  1.3. SystemV IPC介绍

    1.3.1. SystemV IPC的基本特点

      a. 系统通过一些专用API来提供SystemV IPC功能

      b. 分为:信号量、消息队列、共享内存

      c. 其实质也是内核提供的公共内存

    1.3.2. 消息队列

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

    1.3.3. 信号量

      a. 实质就是个计数器(其实就是一个可以用来计数的变量,可以理解为int a)
      b. 通过计数值来提供互斥和同步

    1.3.4. 共享内存

      a. 大片内存直接映射
      b. 类似于LCD显示时的显存用法

  

linux的进程间通信概述的更多相关文章

  1. linux进程间通信概述

    一个大型的应用系统,往往需要众多进程协作,进程间通信的重要性显而易见. 进程间通信有如下一些目的: 数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几兆字节之间. 共享数据: ...

  2. Linux环境进程间通信(四):信号灯

    linux下进程间通信的几种主要手段: 管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允 ...

  3. Linux环境进程间通信(一):管道及命名管道

    linux下进程间通信的几种主要手段: 管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允 ...

  4. linux 设备驱动概述

    linux 设备驱动概述 目前,Linux软件工程师大致可分为两个层次: (1)Linux应用软件工程师(Application Software Engineer):       主要利用C库函数和 ...

  5. <转>Linux环境进程间通信--信号灯(四)

    http://www.ibm.com/developerworks/cn/linux/l-ipc/part4/ 一.信号灯概述 信号灯与其他进程间通信方式不大相同,它主要提供对进程间共享资源访问控制机 ...

  6. 浅析Linux下进程间通信:共享内存

    浅析Linux下进程间通信:共享内存 共享内存允许两个或多个进程共享一给定的存储区.因为数据不需要在客户进程和服务器进程之间复制,所以它是最快的一种IPC.使用共享内存要注意的是,多个进程之间对一给定 ...

  7. 【转载】Linux的进程间通信-信号量

    原文:Linux的进程间通信-信号量 Linux的进程间通信-信号量 版权声明: 本文章内容在非商业使用前提下可无需授权任意转载.发布. 转载.发布请务必注明作者和其微博.微信公众号地址,以便读者询问 ...

  8. <转>Linux环境进程间通信(二): 信号(上)

    原文链接:http://www.ibm.com/developerworks/cn/linux/l-ipc/part2/index1.html 原文如下: 一.信号及信号来源 信号本质 信号是在软件层 ...

  9. Linux 环境进程间通信(六):

    linux下进程间通信的几种主要手段: 管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允 ...

随机推荐

  1. MyEclipse更改项目名web发布名字不改问题

    步骤: 右键项目-->选择propertis-->MyEclipse-->Project Facets-->Web-->右侧更改Web Context-root 如下图:

  2. less中的for循环

    .loop(@count) when (@counter > 0) {   .loop((@counter - 1));    // 递归调用自身   width: (10px * @count ...

  3. 6.re正则表达式

    import re import unicodedata s = "a00xoghasalexjkdfldhfjk" v = s.find("alex") pr ...

  4. 【知识】location.search获取中文时候会被编码成一串字符

    [转码] 例如:case.html?id='这个是页面的标题' 当想要使用location.search获取?id='这个是页面的标题'的时候,包含的中文会被编码成一串字符串. 所以我们需要进行解码, ...

  5. 线程工具类ThreadUtils

    package yqw.java.util; public class ThreadUtils { /**     * showThreadInfo     *      * @return     ...

  6. 在windows窗口下打开文件夹

    System.Diagnostics.Process.Start("Explorer.exe", @"C:\Users\gnt-wangt\Documents\Visua ...

  7. npm link的作用

    语法: 1. 在一个包目录下npm link (把当前的包目录软连接到global folder里面,把二进制文件也软连接到global的bin里面  这个prefix可以用npm config ls ...

  8. python学习之requests基础

    学习地址:http://docs.python-requests.org/zh_CN/latest/user/quickstart.html#id2 使用requests发送网络请求 一.导入requ ...

  9. keepalive + nginx 搭建高可用集群动态网站

    环境准备: 两台节点部署keepalived,并且设为互为主从,实现高可用. 两台从节点部署nginx以及相关组件,作为真实服务器实现动态网站上线. 一.MASTER(BACKUP)节点下载keepa ...

  10. 《Using Databases with Python》Week3 Data Models and Relational SQL 课堂笔记

    Coursera课程<Using Databases with Python> 密歇根大学 Week3 Data Models and Relational SQL 15.4 Design ...