(IPC指进程间通信方式,注意不是线程间,线程之间同步只有信号量和互斥量)

1.管道Pipe

shell的管道就是这个原理

进程管道:popen/pclose函数

1.2命名管道FIFO,是一种特殊的文件,在文件系统中以文件的形式存在

2.信号量:

(备注:学习多进程的同步与互斥,和多线的同步与互斥时,发现他们都有sem信号量,很困惑就查了一下区别才发现: 
信号量分为有名与无名

信号量在进程是以有名信号量进行通信的,在线程是以无名信号进行通信的,因为线程linux还没有实现进程间的通信,所以在sem_init的第二个参数要为0,而且在多线程间的同步是可以通过有名信号量也可通过无名信号,但是一般情况线程的同步是无名信号量,无名信号量使用简单,而且sem_t存储在进程空间中,有名信号量必须LINUX内核管理,由内核结构struct ipc_ids 存储,是随内核持续的,系统关闭,信号量则删除,当然也可以显示删除,通过系统调用删除)

2.1

有名:

初始化并打开有名信号量:sem_open()

退出有名信号量:sem_close()

销毁有名信号量:sem_unlink()

公共:操作信号量:sem_wait()/sem_trywait()/sem_timedwait()/sem_post()/sem_getvalue()

无名:

创建/获得无名信号量:sem_init()

销毁无名信号量:sem_destroy()

3.共享内存

不同的进程逻辑地址空间,映射到同一块物理内存,这个物理内存就是共享内存

shmget

shmat

shmdt

shmctl

4.消息队列

linux操作系统理解-IPC相关推荐

  1. linux操作系统进程间通信IPC之共享存储映射

    (1)文件存储映射I/O(Memory-mapped I/O) 一个磁盘文件与存储空间中的一个缓存区相对应,这样可以在不适合read/write函数的情况下,使用地址(指针)完成I/O操作.具体实现通 ...

  2. linux操作系统进程间通信IPC之管道pipe及FIFO

    linux环境下,各进程相互独立,如果想要交换两个进程之间的数据,需要通过内核,在内存中提供一个缓存区,一个进程往缓存区中写数据,一个往缓存区读数据,内核提供的这种机制称为进程间通信(IPC),常见的 ...

  3. 深入理解Linux操作系统守护进程的意义

    深入理解Linux操作系统守护进程的意义 Linux服务器在启动时需要启动很多系统服务,它们向本地和网络用户提供了Linux的系统功能接口,直接面向应用程序和用户.提供这些服务的程序是由运行在后台的守 ...

  4. 转载:Linux操作系统(1.3.1)《深入理解Nginx》(陶辉)

    原文:https://book.2cto.com/201304/19611.html 1.3 准备工作 由于Linux具有免费.使用广泛.商业支持越来越完善等特点,本书将主要针对Linux上运行的Ng ...

  5. linux操作系统下 c语言编程入门

    linux操作系统下 c语言编程入门 (一)目录介绍 1)Linux程序设计入门--基础知识 2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门 ...

  6. [转] linux操作系统下c语言编程入门

    (一)目录介绍 1)Linux程序设计入门--基础知识  2)Linux程序设计入门--进程介绍  3)Linux程序设计入门--文件操作  4)Linux程序设计入门--时间概念  5)Linux程 ...

  7. linux操作系统下c语言编程入门

    linux操作系统下c语言编程入门  整理编写:007xiong  原文:Hoyt等 (一)目录介绍 1)Linux程序设计入门--基础知识  2)Linux程序设计入门--进程介绍  3)Linux ...

  8. 【转贴】linux操作系统下c语言编程入门

    [转贴]linux操作系统下c语言编程入门 发信人: Lerry (驴是的念来过倒·杏红等头墙上爬), 信区: Linux 标 题: linux操作系统下c语言编程入门 发信站: 哈工大紫丁香 (Fr ...

  9. 图解linux内核设计艺术,Linux内核设计的艺术:图解Linux操作系统架构设计与实现原理...

    Linux内核设计的艺术:图解Linux操作系统架构设计与实现原理 作者:新设计团队 出版日期:2011年05月 文件大小:29.01M 支持设备: ¥6.00在线试读 适用客户端: 言商书局 iPa ...

最新文章

  1. python基础练习(六)
  2. PHP的echo和print小谈
  3. mysql数据库唯一性_mysql表的字段怎么设置唯一性
  4. struts bean static 静态方法注入
  5. php 转码iconv,PHP iconv()函数转字符编码的问题(转)
  6. C#断点续传原理与实现
  7. .Net Core DI,如何在程序集中注册所有现有的可分配类型
  8. Linux设置环境变量小结:设置永久变量临时变量 全局变量局部变量
  9. postgres 命令行建数据库表_PostgreSQL学习笔记(1)之模板数据库
  10. SpringBoot2.0应用(五):SpringBoot2.0整合MyBatis
  11. 如何在浏览器中显示本地文件系统_如何完全卸载浏览器中的Flash插件
  12. 操作系统-存储器管理
  13. GPO 安装 .net 4.5和WMF4
  14. Windows 無法查詢{7B849a69-220F-......} 的 DllName 登錄項目
  15. unity3d C#UnityEngine API 提示中文汉化
  16. ascii码值为负数_C语言编程基础学习字符型数据的ASCII码值为何是负数?
  17. 五星大饭店韩文插曲-请不要离我而去MV
  18. 【转载】Linux下用dd命令扇区读写SD卡
  19. Automatic classification of defective photovoltaic module cells in electroluminescence images-论文阅读笔记
  20. A Morphable Model For The Synthesis Of 3D Faces 论文解析 3DMM

热门文章

  1. HTML爱心动画小玩意儿
  2. 开始记录深度学习工作站的学习之路
  3. 五天搞定英语语法系列汇总
  4. nas与文件服务器对比,NAS网络存储设备为什么能取代文件服务器
  5. web前端100道面试题
  6. KMP算法及next数组(最大公共前后缀)求解
  7. SAP CO模块 KSV5 费用分摊分配解析
  8. u盘名称霸气_皓影改装点点滴滴之记忆U盘详细解说!
  9. 计算多项式的值——基于C语言程序
  10. Shapes-Object