设为首页 加入收藏

TOP

多进程编程(十八)
2012-08-26 13:53:26 来源: 作者: 【 】 浏览:13314
Tags:进程 编程
sembuf *sops;
             unsigned nsops;
        说明:本系统调用用于执行用户定义的在一组信号量上操作的行为集合.
             该组信号量与semid相关.
             参数sops为一个用户定义的信号量操作结构数组指针.
             参数nsops为该数组的元素个数.
             数组的每个元素结构包括如下成员:
               sem_num;    /* 信号量数 */
               sem_op;     /* 信号量操作 */
               sem_flg;    /* 操作标志 */
             由本系统调用定义的每个信号量操作是针对由semid和sem_num指
             定的信号量的.变量sem_op指定三种信号量操作的一种:
             . 若sem_op为一负数并且调用进程具有修改权限,则下列情况之
               一将会发生:
               * 若semval不小于sem_op的绝对值,则sem_op的绝对值被减去
                 semval的值.若(semflg&SEM_UNDO)为真则sem_op的绝对值加
                 上调用进程指定的信号量的semadj值.
               * 若semval小于sem_op的绝对值同时(semflg&IPC_NOWAIT)为
                 真,则本调用立即返回.
               * 若semval小于sem_op的绝对值同时(semflg&IPC_NOWAIT)为
                 假,则本系统调用将增加指定信号量相关的semncnt值(加一),
                 将调用进程挂起直到下列条件之一被满足:
                   (1).semval值变成不小于sem_op的绝对值.当这种情况发
                       生时,指定的信号量相关的semncnt减一,若
                       (semflg&SEM_UNDO)为真则sem_op的绝对值加上调用
                       进程指定信号量的semadj值.
                   (2).调用进程等待的semid已被系统删除.
                   (3).调用进程捕俘到信号,此时,指定信号量的semncnt值
                       减一,调用进程执行中断服务程序.
             . 若sem_op为一正值,同时调用进程具有修改权限,sem_op的值加
               上semval的值,若(semflg&SEM_UNDO)为真,则sem_op减去调用
               进程指定信号量的semadj值.
             . 若sem_op为0,同时调用进程具有读权限,下列情况之一将会发
               生:
               * 若semval为0,本系统调用立即返回.
               * 若semval不等于0且(semflg&IPC_NOWAIT)为真,本系统调用
                 立即返回.
               * 若semval不等于0且(semflg&IPC_NOWAIT)为假,本系统调用
                 将把指定信号量的
                 semzcnt值加一,将调用进程挂起直到下列情况之一发生:
&
首页 上一页 15 16 17 18 19 20 21 下一页 尾页 18/25/25
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Core Dump?! 下一篇字符串转换篇

评论

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