UNIX环境高级编程——创建与打开IPC通道
2013-07-07 18:11
267 查看
创建或打开一个IPC对象的三个getXXX函数的第一个参数key是类型为key_t的IPC键,返回值identifier是一个整数标识符。该标识符不同于ftok函数的id参数。对于key值,应用程序有两种选择。
(1)调用ftok,给它传递pathname和id。
(2)指定key为IPC_PRIVATE,这将保证创建一个新的,唯一的IPC对象。
所有三个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位时没有意义的。
(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位时没有意义的。
相关文章推荐
- UNIX环境高级编程——创建与打开IPC通道
- UNIX环境高级编程——创建与打开IPC通道
- UNIX环境高级编程学习之第十二章线程控制-以分离状态创建线程
- UNIX环境高级编程——IPC总结
- UNIX环境高级编程学习之第十六章网络IPC:套接字 - 简单UDP Socket 通信
- 为学习APUE(Unix环境高级编程)偷懒,而写的脚本,基本上相当于一个简单的工程创建脚本了
- Unix 环境高级编程---线程创建、同步、
- UNIX环境高级编程-第16章- 网络IPC:套接字 - 二
- (十三) [终篇] 一起学 Unix 环境高级编程 (APUE) 之 网络 IPC:套接字
- UNIX环境高级编程 第16章 网络IPC:套接字
- UNIX环境高级编程之创建进程与线程
- UNIX环境高级编程学习之第十一章线程-线程的创建、退出、等待、取消、分离
- unix 环境高级编程 线程一 创建
- UNIX环境高级编程学习之第十六章网络IPC:套接字 - 非阻塞的Socket通信EPoll模型(多路复用), 实用Socket通信模板
- UNIX环境高级编程学习之第十六章网络IPC:套接字 - 套接字选项的使用 (心跳检测、绑定地址复用)
- UNIX环境高级编程——创建孤儿进程
- UNIX环境高级编程(第16章 网络IPC:套接字)
- UNIX:高级环境编程 - 第十五章 IPC:进程间通信
- (十二) 一起学 Unix 环境高级编程 (APUE) 之 进程间通信(IPC)
- Unix 环境高级编程 (APUE) 之 网络 IPC:套接字