创建或打开一个IPC对象的三个getXXX函数的第一个参数key是类型为key_t的IPC键,返回值identifier是一个整数标识符。该标识符不同于ftok函数的id参数。对于key值,应用程序有两种选择。

(1)调用ftok,给它传递pathname和id。

(2)指定key为IPC_PRIVATE,这将保证创建一个新的,唯一的IPC对象。

key_t ftok(const char *pathname, int proj_id);

所有三个getXXX函数都有一个名为oflag的参数,它指定IPC对象的读写权限位(ipc_perm结构的mode成员),并选择是创建一个新的IPC对象还是访问一个已存在的IPC对象。这种选择的规则如下。

(1)指定key为IPC_PRIVATE能保证创建一个唯一的IPC对象。没有一对id和pathname的组合会导致ftok产生IPC_PRIVATE这个键值。

(2)设置oflag参数的IPC_CREAT位但不设置它的IPC_EXCL位时,如果所指定键的IPC对象不存在,那就创建一个新的对象,否则返回该对象。

(3)同时设置oflag的 IPC_CREAT和IPC_EXCL位时,如果所指定键的IPC对象不存在,那就创建一个新的对象,否则返回一个EEXIST错误,因为该对象已存在。

设置IPC_EXCL位但不设置IPC_CREAT位时没有意义的。

转载于:https://www.cnblogs.com/wangfengju/p/6172743.html

UNIX环境高级编程——创建与打开IPC通道相关推荐

  1. (三) 一起学 Unix 环境高级编程 (APUE) 之 文件和目录

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

  2. UNIX环境高级编程笔记

    1.setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &opt, len);   SO_REUSEADDR套接口选项允许为以下四个不同的目的提供服务:   ...

  3. 《Unix环境高级编程》学习笔记:从点到面

    以前在课堂上学习过<Unix初级教程(第四版)>,对于Unix有了一点了解.由于以后使用的需要,要对它进行比较深入的学习,为此需要阅读不少的书籍,这本<Unix环境高级编程>便 ...

  4. Unix环境高级编程 笔记

    Unix环境高级编程(第二版)学习笔记 这是一次较长时间的整理,然而跳跃了一些章节和很多知识点,仍然是很不完善很不全面的. 前言 操作系统某些问题 严格意义上,可将操作系统定义为一种软件,它控制计算机 ...

  5. 《UNIX环境高级编程(第3版)》

    <UNIX环境高级编程(第3版)> 基本信息 原书名:Advanced Programming in the UNIX Environment (3rd Edition) (Addison ...

  6. UNIX环境高级编程-第三版

    Unix环境高级编程-第三版 之前学习了<Linux系统编程>对于常见的概念和函数都有了基础的认知,这里准备通过这本书,深入学习系统API相关内容.笔记内容会有所倾向,不会严格反应书本内容 ...

  7. 5w字总结 Unix系统编程学习笔记(面试向)(Unix环境高级编程/Unix环境程序设计)

    文章目录 一.计算 C语言的数据表示与处理 计算 C语言的基本运算操作 内存表和符号表 类型转换 函数类型的分析 指令 复合指令 句法 函数 函数激活(Activation Record) 函数激活定 ...

  8. 文件和目录(二)--unix环境高级编程读书笔记

    在linux中,文件的相关信息都记录在stat这个结构体中,文件长度是记录在stat的st_size成员中.对于普通文件,其长度可以为0,目录的长度一般为1024的倍数,这与linux文件系统中blo ...

  9. 《UNIX 环境高级编程》学习笔记—— 标准I/O库

    UNIX环境高级编程--标准I/O库 流和 FILE 对象 标准输入.标准输出和标准错误 缓冲 打开流 读和写流 每次一行 I/O 二进制 I/O 定位流 格式化 I/O 临时文件 内存流 流和 FI ...

最新文章

  1. 我非要捅穿这 Neutron(一)网络实现模型篇
  2. HDU 3397 Sequence operation 线段树 成段更新 区间合并
  3. SVN合并(merge)的使用
  4. 2020太湖杯 | Wp及复现
  5. 强化学习——Qlearning
  6. 载winpcap4.1.1_最常用的11个电缆载流量数据表,建议收藏备用
  7. 还没毕业就被阿里30万年薪抢定,他凭什么?
  8. Kali Linux 从入门到精通(三)-入侵系统定制
  9. IDEA常用提升开发效率的插件及快捷键(持续更新)
  10. 前端工程化知识要点回顾思考
  11. Matlab:excel文件 转 txt文件 (只需2行代码)
  12. python 英文 词频分析软件_有哪些软件可以进行中文词频分析?
  13. 数据库防火墙的性能和高可用性分析
  14. ES 索引创建及查询
  15. python-编码实现指数平滑法移动平均法
  16. 做独立站如何精准引流
  17. Android支付接入(七):Googlenbsp;In-app-Billing
  18. what's the 套期保值
  19. RISC-V Tools编译安装三部曲之一
  20. CDN有用吗?我的网站到底需不需要CDN加速?

热门文章

  1. matlab 状态空间的波特图,MATLAB:对于状态空间方程的系统辨识
  2. html用ajax做三级联动,怎样使用JS+AJAX做出三级联动
  3. html——inline、block与block-inline区别
  4. the server is not ready for publishing.Please check if the Publishing Tools on the server
  5. access查询设计sol视图_Access删除索引
  6. python函数参数的引用传递_Python初学者笔记(八):函数参数的值传递和引用传递...
  7. itext根据数据生成PDF
  8. VUE3.0引入本地js文件
  9. Impala与Hive的关系
  10. 详解: Spark 相对于MapReduce的优势(为什么MapReduce性能不理想)