【linux高级程序设计】(第十一章)System V进程间通信 1
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相关推荐
- 《Linux 高级程序设计(第三版)》——导读
** 前言 ** Linux应用开发是目前最为广泛的软件开发内容之一,同时也是从事Linux内核及驱动开发的基础.<Linux高级程序设计>一书经过两次出版,收到了大量的读者来信,对本书提 ...
- linux进程的高级管理,Linux高级程序设计(第2版) PDF扫描版[94MB]
Linux高级程序设计(第2版)以Linux操作系统(内核为2.6版本)为开发平台.GCC 4.0/GDB 6.3为开发调试环境,详细介绍了Linux系统下编程环境及编程工具.文件管理(文件类型.AN ...
- Linux内存管理第十一章 -- Swap Management
文章目录 Linux内存管理第十一章 -- Swap Management Describing the Swap Area Mapping Page Table Entries to Swap En ...
- 深入linux内核架构--第五章 锁与进程间通信
内容简介:主要讲解了Linux各个独立进程间(或线程间)相互通信的机制(主要是System V机制),由于涉及到进程间资源共享,引入资源保护问题,也就是Linux的锁. 5.1 控制机制 首先通过一个 ...
- 【Linux命令】《鸟哥Linux基础》第二十一章 软件安装:源代码与Tarball
第二十一章 软件安装:源代码与Tarball 了解:如何将开放源码的程序设计.加入函数库的原理.通过编译而成为可执行的二进制程序,最后该文件可被我们所使用的一连串过程. 这一章介绍最原始的软件管理方式 ...
- 【正点原子Linux连载】第十一章 网络编程 摘自【正点原子】I.MX6U嵌入式Qt开发指南V1.0.2
1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...
- 攻下《JavaScript高级程序设计》——第二章 在HTML中使用JavaScript
从上一章我们知道了,JavaScript是一种专门为网页交互而设计的脚本语言,那么,它就免不了和HTML打交道,所以在设计JavaScript的时候,Netscape首要面临的就是,怎么让HTML和J ...
- 细说linux IPC(十):system V 消息队列
[版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet 或 .../gentleliu,文章仅供学习交流,请勿用于商业用途] system V消息队列和posix消息队列类 ...
- 【linux高级程序设计】(第十一章)System V进程间通信 3
信号量通信机制 可以看到,跟消息队列类似,也是包括两个结构. int semget (key_t __key, int __nsems, int __semflg) : 创建信号量集合 第一个参数:f ...
最新文章
- java学绘图吗_Java绘图
- 一键洞悉员工级人效!智邦国际集团业财一体化管理系统:业财一心,基业长青
- Jmeter Web 性能测试入门 (四):一个小实例带你学会 Jmeter 脚本编写
- 水晶报表设置图片高度与宽度
- ionic2+angular2中踩的那些坑
- Openlayer:学习笔记之交互
- mysql 怎么创建B Tree索引_B-Tree,B+Tree以及mysql索引的实现
- 【渝粤题库】国家开放大学2021春4990电子商务概论(农)题目
- (4.4.1)使用storyboard实现页面跳转,简单的数据传递
- 快速当前目录下打开cmd命令窗口
- MySQL 的 max_allowed_packet
- 微信好友大揭秘,使用Python抓取朋友圈数据,通过人脸识别全面分析好友,一起看透你的“朋友圈”
- 第二届中国移动“梧桐杯”大数据应用创新大赛总决赛12强名单发布
- 池塘cPond分享会第5期 • 守望者联盟 • 巴比特副总裁马千里 • 数字艺术对Web3的价值...
- Retrofit 大体框架
- 计算机网络安装系统怎么办,电脑不能连网要怎么解决?一定要重装系统?千万别再犯傻了!...
- Science:前额叶皮层在哺乳动物上的解剖学异同
- oracle篮球,篮球小王子!任嘉伦打篮球也不来赖,超爱11号
- DNS劫持原理、dns劫持有什么办法解决、DNS劫持原理与操作
- 数据库(MySQL)开发技术题库
热门文章
- C++面试题:内存的分配方式有几种?
- C++基础教程之函数
- 学以致用六---Centos7.2+python3.6.2+django2.1.1 --搭建一个网站
- [转] Spring XML配置十二个最佳实践
- 认知时代,IBM主机与LinuxONE交付更大业务价值
- Linux中/etc/init.d
- eclipse 中使用Git
- 预处理,编译,汇编,链接程序的区别
- 实现简单render函数
- Android应用开发学习笔记之事件处理