• UNIX环境高级编程——创建与打开IPC通道


    创建或打开一个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位时没有意义的。


  • 相关阅读:
    暑假集训每日一题0716(BFS)
    HDOJ1754(I Hate It)
    POJ2777(Count Color)
    暑假集训每日一题0717(DFS)
    SPOJ7259(Light Switching)
    cocos2dx CCTextureCache
    写给自己——EntryName命名规则
    观XX项目感1
    观XX项目感2 之 软件工程的图纸(再看UML类图)
    游戏编程 && cocos2d 学习
  • 原文地址:https://www.cnblogs.com/hehehaha/p/6332668.html
Copyright © 2020-2023  润新知