设为首页 加入收藏

TOP

多进程编程(十一)
2012-08-26 13:53:26 来源: 作者: 【 】 浏览:13329
Tags:进程 编程
p;        以上信息可用命令ipcs -a看到.
        返回值:成功则返回0,否则返回-1.
    14.msgrcv()
        功能:从消息队列中取得指定类型的消息.
        语法:#include <sys/types.h>
             #include <sys/ipc.h>
             #include <sys/msg.h>
             int msgrcv(msqid,msgp,msgsz,msgtyp,msgflg)
             int msqid;
             void *msgp;
             int msgsz;
             long msgtyp;
             int msgflg;
        说明:本系统调用从由msqid指定的消息队列中读取一个由msgtyp指定
             类型的消息到由msgp指向的缓冲区中,同样的,该缓冲区的结构如
             前所述,包括消息类型和消息正文.msgsz为可接收的消息正文的
             字节数.若接收到的消息正文的长度大于msgsz,则会被截短到
             msgsz字节为止(当消息标志msgflg&MSG_NOERROR为真时),截掉的
             部份将被丢失,而且不通知消息发送进程.
             msgtyp指定消息类型:
             . 为0则接收消息队列中第一个消息.
             . 大于0则接收消息队列中第一个类型为msgtyp的消息.
             . 小于0则接收消息队列中第一个类型值不小于msgtyp绝对值且
               类型值又最小的消息.
             msgflg指定操作行为:
             . 若(msgflg&IPC_NOWAIT)是真的,调用进程会立即返回,若没有
               接收到消息则返回值为-1,errno设置为ENOMSG.
             . 若(msgflg&IPC_NOWAIT)不是真的,则调用进程会被挂起直到下
               面情况之一发生:
                 * 队列中的消息的类型是有效的.
                 * 消息队列标志被系统删除.系统调用返回-1.
                 * 调用进程接收到一个未被忽略的中断信号,调用进程继续
                   执行或被终止.
             调用成功后,对应指定的消息队列的相关结构做如下动作:
             . 消息数(msg_qnum)减1.
             . 消息队列最近接收进程号(msg_lrpid)改为调用进程号.
             . 消息队列接收时间(msg_rtime)改为当前系统时间.
             以上信息可用命令ipcs -a看到.
        返回值:调用成功则返回值等于接收到实际消息正文的字节数.
             不成功则返回-1.
    15.msgctl()
        功能:消息控制操作
        语法:#include <sys/types.h>
             #include <sys/ipc.h>
             #include <sys/msg.h>
             int msgctl(msqid,cmd,buf)
             int msqid,cmd;
             struct msqid_ds *buf;
        说明:本系统调用提供一系列消息控制操作,操作动作由cmd定义,以下
    &nb
首页 上一页 8 9 10 11 12 13 14 下一页 尾页 11/25/25
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Core Dump?! 下一篇字符串转换篇

评论

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