精华内容
下载资源
问答
  • msgget_msgget_源码

    2021-10-03 05:19:52
    消息队列之msgget()、msgsnd()、msgrcv()及其基础实验
  • msgget返回值为0

    2020-02-18 16:16:14
    其实msgget的返回值只要不是-1都是没有问题的,当之前没有人使用过msgget的时候返回的可能是0,但是这个0是合法的消息队列id,假如再次调用msgget的话就不是0了,而是另一个值。 ...

    其实msgget的返回值只要不是-1都是没有问题的,当之前没有人使用过msgget的时候返回的可能是0,但是这个0是合法的消息队列id,假如再次调用msgget的话就不是0了,而是另一个值。

    展开全文
  • 消息队列-msgget

    2020-09-24 10:56:05
    msgget-获取系统V消息队列标识符 头文件 #include <sys / types.h> #include <sys / ipc.h> #include <sys / msg.h> 函数 int msgget(key_t key ,int msgflg );创建或打开消息队列 key:是个...

    msgget-获取系统V消息队列标识符(获取消息队列的id)

    头文件

    #include <sys / types.h>
    #include <sys / ipc.h>
    #include <sys / msg.h>

    函数

       int msgget(key_t key ,int msgflg );创建或打开消息队列
    

    key:是个键值, 多个进程可通key值来访问同一个消息队列.函数的返回值id 与key 有关.

    key值通过fork函数获取;

    msgflag: 权限标志位.

    如果创建了新的消息队列,则其关联的数据结构

       msqid_ds(请参阅msgctl(2))初始化如下:
    
       · msg_perm.cuid和msg_perm.uid设置为的有效用户ID调用过程。
    
       · msg_perm.cgid和msg_perm.gid设置为的有效组ID调用过程。
    
       · msg_perm.mode的最低有效9位设置为最低msgflg的有效9位。
    
       · msg_qnum,msg_lspid,msg_lrpid,msg_stime和msg_rtime设置为 0。
    
       · msg_ctime设置为当前时间。
    
       · msg_qbytes设置为系统限制MSGMNB。
    
       如果消息队列已经存在,则验证权限,并且进行检查以查看其是否标记为销毁。
    

    返回值

       如果成功,则返回值将是消息队列标识符
       (一个非负整数),否则为-1,其中errno表示
       错误。
    
    展开全文
  • msgget()函数

    千次阅读 2018-08-01 16:33:37
    msgget()函数被用来创建新的消息队列或获取已有的消息队列。其函数定义如下: 系统调用: msgget() 函数声明: int msgget ( key_t key, int msgflg ) 返回值: message queue identifier on success -1 on error: ...

    原文链接:链接

    msgget()函数被用来创建新的消息队列或获取已有的消息队列。其函数定义如下:
    系统调用: msgget()
    函数声明: int msgget ( key_t key, int msgflg )
    返回值: message queue identifier on success
    -1 on error: errno = EACCESS (permission denied)
    EEXIST (Queue exists, cannot create)
    EIDRM (Queue is marked for deletion)
    ENOENT (Queue does not exist)
    ENOMEM (Not enough memory to create queue)
    ENOSPC (Maximum queue limit exceeded)
    msgget()函数的第一个参数是消息队列对象的关键字(key),函数将它与已有的消息队
    列对象的关键字进行比较来判断消息队列对象是否已经创建。而函数进行的具体操作是由
    第二个参数,msgflg 控制的。它可以取下面的几个值:
    IPC_CREAT :
    如果消息队列对象不存在,则创建之,否则则进行打开操作;
    IPC_EXCL:
    和IPC_CREAT 一起使用(用”|”连接),如果消息对象不存在则创建之,否则产生一个
    错误并返回。
    如果单独使用IPC_CREAT 标志,msgget()函数要么返回一个已经存在的消息队列对象
    的标识符,要么返回一个新建立的消息队列对象的标识符。如果将IPC_CREAT 和IPC_EXCL
    标志一起使用,msgget()将返回一个新建的消息对象的标识符,或者返回-1 如果消息队列
    对象已存在。IPC_EXCL 标志本身并没有太大的意义,但和IPC_CREAT 标志一起使用可
    以用来保证所得的消息队列对象是新创建的而不是打开的已有的对象。
    除了以上的两个标志以外,在msgflg 标志中还可以有存取权限控制符。这种控制符的
    意义和文件系统中的权限控制符是类似的。
    最后,我们将使用msgget()函数建立一个更加简便的封装函数来作为本节的例子:
    int open_queue( key_t keyval )
    {
    int qid;
    if((qid = msgget( keyval, IPC_CREAT | 0660 )) == -1)
    {
    return(-1);
    }
    return(qid);
    }
    这个简单的例子中唯一需要注意的一点就是在msgflg 中加入了存取权限控制符0660。
    其余的部分请读者自行分析。

    展开全文
  • API Linux C man msgget

    2021-01-28 11:12:23
    msgget - 获取 System V 消息队列标识符 SYNOPSIS #include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h> int msgget(key_t key, int msgflg); DESCRIPTION msgget()系统调用返回...


    点击我, 到底部

    NAME

    msgget - 获取 System V 消息队列标识符
    

    SYNOPSIS

    #include <sys/types.h>
    #include <sys/ipc.h>
    #include <sys/msg.h>
    
    int msgget(key_t key, int msgflg);
    

    DESCRIPTION

    msgget()系统调用返回与key参数值相关联的system V 消息队列标识符。
    如果key具有该值,则创建一个新的消息队列
    IPC_PRIVATE或key不是IPC_PRIVATE,没有带有给定密钥key的消息队列存在,
    并且IPC_CREAT在msgflg中指定。
    
    如果msgflg同时指定了IPC_CREAT和IPC_EXCL,并且key的消息队列已经存在,
    则msgget()失败,errno设置为EEXIST。(这类似于the effect of
    组合o_create | O_EXCL for open(2).)
    
    在创建时,参数msgflg的最低有效位定义消息队列的权限。
    这些权限位具有相同的格式和语义为open(2)的mode参数指定的权限。
    (不使用execute权限。)
    
    如果创建了一个新的消息队列,
    那么它的相关数据结构msqid_ds(参见msgctl(2))被初始化如下:
    
    msg_perm.cuid和msg_perm.uid设置为呼叫进程的有效用户ID。
    msg_perm.cgid和msg_perm.gid被设置为呼叫进程的有效组号。
    设置msg_perm.mode的最低9位为msgflg的最低9位
    msg_qnum、msg_lspid、msg_lrpid、msg_stime、msg_rtime设置为0。
    msg_ctime设置为当前时间。
    msg_qbytes设置为系统限制MSGMNB。
    
    如果消息队列已经存在,则验证权限,并检查是否将其标记为销毁。
    

    RETURN VALUE

    如果成功,返回值将是消息队列标识符(一个非负整数),否则为-1,errno表示错误。
    
    点击我, 到顶部
    展开全文
  • 消息队列——msgget

    2015-05-22 09:31:59
    msgget()函数被用来创建新的消息队列或获取已有的消息队列。其函数定义如下: 系统调用: msgget() 函数声明: int msgget ( key_t key, int msgflg ) 返回值: message queue identifier on success ...
  • 消息队列函数实例代码及相关教程 包括msgget、msgctl、msgsnd、msgrcv
  • /*msgget函数创建消息队列*/ #include &lt;unistd.h&gt; #include &lt;sys/types.h&gt; #include &lt;sys/ipc.h&gt; #include &lt;sys/msg.h&gt; #include &lt;stdlib.h&...
  • &amp;nbsp;消息队列函数由msgget、msgctl、msgsnd、msgrcv四个函数组成。... msgget函数原型msgget(得到消息队列标识符或创建一个消息队列对象)所需头文件#include &amp;lt;sys/types.h&amp;gt;#i...
  • msgget(2) - Linux manual page 1、函数原型 int msgget(key_t key,int msgflg); 2.功能说明 用于创建一个新的或打开一个已经存在的消息队列,此消息队列与key相对应。 msgget()系统调用返回system V消息...
  • msgget——创建一个消息队列 msgsnd、msgrcv——添加数据到消息队列、从消息队列获取数据 msgctl——控制消息队列 一、msgget——创建一个消息队列 1.原函数 表头文件 #include <sys/types.h> #include <...
  • 系统调用msgget()

    千次阅读 2011-11-29 14:58:55
    如果希望创建一个新的消息队列,或者希望存取一个已经存在的消息队列,你可以使用系统调用msgget()。  系统调用:msgget();  原型:int msgget(key_t key,int msgflg);  返回值:如果成功,返回消息队列标识符...
  • 消息队列函数由msgget、msgctl、msgsnd、msgrcv四个函数组成。下面的表格列出了这四个函数的函数原型及其具体说明。 1. msgget函数原型 msgget(得到消息队列标识符或创建一个消息队列对象) 所需...
  • msgget、tm结构

    千次阅读 2008-09-10 10:49:00
    msgget()系统调用msgget() 如果希望创建一个新的消息队列,或者希望存取一个已经存在的消息队列,你可以使用系统调用msgget()。 系统调用:msgget(); 原型:intmsgget(key_t key,int msgflg); 返回值:如果成功,...
  • msgget()函数 该函数用来创建和访问一个消息队列。 原型: int msgget ( key_t key, int msgflg ); 返回值:如果成功,返回消息队列标识符 ​ 如果失败,则返回- 1:errno =EACCESS (权限不允许) ​ ...
  • System V IPC 机制:消息队列消息队列函数 msgget()msgget.c函数msgsnd()和函数msgrcv()msgget_msgsnd.cmsgget_msgrcv.cmsgget_msgrcv_nowait.c函数msgctl()msgget_msgctl.c 消息队列 消息队列与 FIFO 很相似,都是...
  • 消息队列函数由msgget、msgctl、msgsnd、msgrcv四个函数组成。下面的表格列出了这四个函数的函数原型及其具体说明。 1. msgget函数原型 msgget(得到消息队列标识符或创建一个消息队列对象) 所...
  • msgid = msgget(IPC_PRIVATE, IPC_CREAT|0666); 但为什么 在程序中多次调用,每次返回的id值固定比上一次大32769(虽然实际没发现有什么异常) 19-02-25 17:46:13.805 : lm_msg_init iMsgId 0=131076 19-02-25 17...
  • 消息队列函数由msgget、msgctl、msgsnd、msgrcv四个函数组成。下面的表格列出了这四个函数的函数原型及其具体说明。1.   msgget函数原型msgget(得到消息队列标识符或创建一个消息队列对象)所需头文件#include &...
  • 文章目录功能头文件函数原型参数含义返回说明 功能 用于创建一个新的或打开一个已经存在的消息...int msgget(key_t key, int msgflg); 参数含义 key:消息队列关联的键。 msgflg:消息队列的建立标志和存取权...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,374
精华内容 3,349
关键字:

msgget