System V, 曾经也被称为 AT&T System V,是Unix操作系统众多版本中的一支。

传统上,System V 被看作是两种UNIX"风味"之一(另一个是 BSD)。然而,随着一些并不基于这两者代码的UNIX实现的出现,例如 Linux 和 QNX, 这一归纳不再准确.

System V IPC基础

System V 的IPC机制主要有消息队列信号量共享内存3种机制。

shell中的 ipcs 命令可以查看当前系统中正在使用的IPC工具。

shell中的 ipcrm 命令:手工删除某个IPC机制。

ID值:每个IPC机制都分配了唯一的ID值,使用ID值对IPC机制操作。

key值:32位整数。两个进程不能随意访问对方空间,即当一个进程创建ID值后,另一个进程无法获取。为此,IPC约定使用key值做为参数创建,相同的key值将得到同一个IPC对象的ID。

  为避免所有程序都使用相同的key值,采用ftok()函数创建key值

  key_t ftok (__const char *__pathname, int __proj_id) : 第一个参数为路径名, 第二个参数为int型变量

    key值的第31-24位,为ftok第2个参数的低8位

    key值的第23-16位,为文件的st_dev属性的低8位

    key值的第15-0位,为文件的st_ino属性的低16位

31 ——> 0 第几位是按这个顺序定义的

拥有者及权限:IPC工具所具有的IPC访问权限在/usr/include/bits/ipc.h中定义为struct ipc_perm

【linux高级程序设计】(第十一章)System V进程间通信 1相关推荐

  1. 《Linux 高级程序设计(第三版)》——导读

    ** 前言 ** Linux应用开发是目前最为广泛的软件开发内容之一,同时也是从事Linux内核及驱动开发的基础.<Linux高级程序设计>一书经过两次出版,收到了大量的读者来信,对本书提 ...

  2. linux进程的高级管理,Linux高级程序设计(第2版) PDF扫描版[94MB]

    Linux高级程序设计(第2版)以Linux操作系统(内核为2.6版本)为开发平台.GCC 4.0/GDB 6.3为开发调试环境,详细介绍了Linux系统下编程环境及编程工具.文件管理(文件类型.AN ...

  3. Linux内存管理第十一章 -- Swap Management

    文章目录 Linux内存管理第十一章 -- Swap Management Describing the Swap Area Mapping Page Table Entries to Swap En ...

  4. 深入linux内核架构--第五章 锁与进程间通信

    内容简介:主要讲解了Linux各个独立进程间(或线程间)相互通信的机制(主要是System V机制),由于涉及到进程间资源共享,引入资源保护问题,也就是Linux的锁. 5.1 控制机制 首先通过一个 ...

  5. 【Linux命令】《鸟哥Linux基础》第二十一章 软件安装:源代码与Tarball

    第二十一章 软件安装:源代码与Tarball 了解:如何将开放源码的程序设计.加入函数库的原理.通过编译而成为可执行的二进制程序,最后该文件可被我们所使用的一连串过程. 这一章介绍最原始的软件管理方式 ...

  6. 【正点原子Linux连载】第十一章 网络编程 摘自【正点原子】I.MX6U嵌入式Qt开发指南V1.0.2

    1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...

  7. 攻下《JavaScript高级程序设计》——第二章 在HTML中使用JavaScript

    从上一章我们知道了,JavaScript是一种专门为网页交互而设计的脚本语言,那么,它就免不了和HTML打交道,所以在设计JavaScript的时候,Netscape首要面临的就是,怎么让HTML和J ...

  8. 细说linux IPC(十):system V 消息队列

    [版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet 或 .../gentleliu,文章仅供学习交流,请勿用于商业用途] system V消息队列和posix消息队列类 ...

  9. 【linux高级程序设计】(第十一章)System V进程间通信 3

    信号量通信机制 可以看到,跟消息队列类似,也是包括两个结构. int semget (key_t __key, int __nsems, int __semflg) : 创建信号量集合 第一个参数:f ...

最新文章

  1. java学绘图吗_Java绘图
  2. 一键洞悉员工级人效!智邦国际集团业财一体化管理系统:业财一心,基业长青
  3. Jmeter Web 性能测试入门 (四):一个小实例带你学会 Jmeter 脚本编写
  4. 水晶报表设置图片高度与宽度
  5. ionic2+angular2中踩的那些坑
  6. Openlayer:学习笔记之交互
  7. mysql 怎么创建B Tree索引_B-Tree,B+Tree以及mysql索引的实现
  8. 【渝粤题库】国家开放大学2021春4990电子商务概论(农)题目
  9. (4.4.1)使用storyboard实现页面跳转,简单的数据传递
  10. 快速当前目录下打开cmd命令窗口
  11. MySQL 的 max_allowed_packet
  12. 微信好友大揭秘,使用Python抓取朋友圈数据,通过人脸识别全面分析好友,一起看透你的“朋友圈”
  13. 第二届中国移动“梧桐杯”大数据应用创新大赛总决赛12强名单发布
  14. 池塘cPond分享会第5期 • 守望者联盟 • 巴比特副总裁马千里 • 数字艺术对Web3的价值...
  15. Retrofit 大体框架
  16. 计算机网络安装系统怎么办,电脑不能连网要怎么解决?一定要重装系统?千万别再犯傻了!...
  17. Science:前额叶皮层在哺乳动物上的解剖学异同
  18. oracle篮球,篮球小王子!任嘉伦打篮球也不来赖,超爱11号
  19. DNS劫持原理、dns劫持有什么办法解决、DNS劫持原理与操作
  20. 数据库(MySQL)开发技术题库

热门文章

  1. C++面试题:内存的分配方式有几种?
  2. C++基础教程之函数
  3. 学以致用六---Centos7.2+python3.6.2+django2.1.1 --搭建一个网站
  4. [转] Spring XML配置十二个最佳实践
  5. 认知时代,IBM主机与LinuxONE交付更大业务价值
  6. Linux中/etc/init.d
  7. eclipse 中使用Git
  8. 预处理,编译,汇编,链接程序的区别
  9. 实现简单render函数
  10. Android应用开发学习笔记之事件处理