设为首页 加入收藏

TOP

多进程编程(十五)
2012-08-26 13:53:26 来源: 作者: 【 】 浏览:13321
Tags:进程 编程
p;            #include <sys/ipc.h>
             #include <sys/shm.h>
             int shmctl(shmid,cmd,buf)
             int shmid,cmd;
             struct shmid_ds *buf;
        说明:本系统调用提供一系列共享内存控制操作.操作行为由cmd指定.
             以下为cmd的有效值:
             . IPC_STAT:将shmid相关的数据结构中各个元素的当前值放入由
                 buf指向的结构中.
             . IPC_SET:将shmid相关的数据结构中的下列元素设置为由buf指
                 向的结构中的对应值.
                 shm_perm.uid
                 shm_perm.gid
                 shm_perm.mode
                 本命令只能由有效UID等于shm_perm.cuid或shm_perm.uid的
                 进程或有效UID有合适权限的进程操作.
             . IPC_RMID:删除由shmid指示的共享内存.将它从系统中删除并
                 破坏相关的数据结构.
                 本命令只能由有效UID等于shm_perm.cuid或shm_perm.uid的
                 进程或有效UID有合适权限的进程操作.
        返回值:若调用成功则返回0,否则返回-1.
        例子:本例包括上述所有共享内存操作系统调用:
             #include <sys/types.h>
             #include <sys/ipc.h>
             #include <sys/shm.h>
             #define SHMKEY 74
             #define K 1024
             int shmid;
             cleanup()
             {
                 shmctl(shmid,IPC_RMID,0);
                 exit(0);
             }
             main()
             {
                 int *pint;
                 char *addr1,*addr2;
                 extern char *shmat();
                 extern cleanup();
                 for (i=0;i<20;i++)
                     signal(i,cleanup);
                 shmid=shmget(SHMKEY,128*K,0777|IPC_CREAT);
                 addr1=shmat(shmid,0,0);
                 addr2=shmat(shmid,0,0);
                 printf("addr1 0x%x addr2 0x%x\n",addr1,addr2);
    &
首页 上一页 12 13 14 15 16 17 18 下一页 尾页 15/25/25
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Core Dump?! 下一篇字符串转换篇

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: