IPC_SET:该命令用来设置消息队列的属性,要设置的属性存储在buf中,可设置的属性包括: msg_perm.uid 、 msg_perm.gid、msg_perm.mode以及msg_qbytes IPC_RMID:从内核中删除msgqid标识的消息队列 struct msqid_ds { struct ipc_perm msg_perm; /* Ownership and permissions */ time_t msg_stime; /* Time ...
IPC_SET :设置消息队列属性。 IPC_RMID:删除消息队列。 IPC_INFO:读取消息队列基本情况。此命令等同于 ipcs 命令。 这4 条命令(IPC_STAT、IPC_SET、IPC_INFO 和 IPC_RMID)也可用于信号量和共享存储。 buf:临时的 msqid_ds 结构体类型的变量。用于存储读取的消息队列属性或需要修改的消息队列属性。 举例:msgct...
1. IPC_STAT:获取IPC对象的状态信息,将其保存在buf中。 2. IPC_SET:设置IPC对象的状态信息,使用buf中的值。 3. IPC_RMID:删除IPC对象。 用法 msgctl的用法主要包括创建、删除、修改和获取IPC对象的信息四个方面。下面将分别介绍。 1.创建IPC对象 使用msgget函数可以创建消息队列、共享内存和信号量。创建成功后...
command是将要采取的动作,它可以取3个值, IPC_STAT:把msgid_ds结构中的数据设置为消息队列的当前关联值,即用消息队列的当前关联值覆盖msgid_ds的值。 IPC_SET:如果进程有足够的权限,就把消息列队的当前关联值设置为msgid_ds结构中给出的值 IPC_RMID:删除消息队列 buf是指向msgid_ds结构的指针,它指向消息队列模式...
IPC_SET 只能由具有相应特权的进程执行,或者其有效用户标识等于与msgid相关联的msqid_ds或msqid_ds64数据结构中的msg_perm.cuid或msg_perm.uid的值。 只有具有相应特权的进程才能提高msg_gbytes的值。 IPC_RMID 从系统中除去由msgid指定的消息队列标识,并销毁与其关联的消息队列和msqid_ds或msqid_ds64数据结构。IPC...
/* Update the internal data structure */ if( msgctl( qid, IPC_SET, &tmpbuf) == -1) { return(-1); } return(0); } IPC_RMID 的例子: int remove_queue( int qid ) { if( msgctl( qid, IPC_RMID, 0) == -1) { return(-1); } return(0); }...
if( msgctl( qid, IPC_SET, &tmpbuf) == -1) { ret搞做介材约究林项urn(-1); } r岁台那法脱眼院eturn( } 我们通过调用get_queue_ds来读取队列的内部数据结构。然后,我们调用sscanf( )修改数据结构msg_perm中的mode 成员的值。但直到调用msgctl()时,权限的改变才真正完成。在这里msgctl()使用的是...
IPC_SET:将 msqid 相关的数据结构中的元素设置为由 buf 指向的结构中的对应值。 4.返回值: 成功:0 失败:-1 二、实例 1.删除消息队列 ret = msgctl(msg_id , IPC_RMID,NULL); //不保存消息队列的属性用NULL 2.保存消息队列 struct msqid_ds tmp; ...
IPC_SET:设置消息队列的属性,要设置的属性需先存储在buf中,可设置的属性包括:msg_perm.uid、msg_perm.gid、msg_perm.mode以及msg_qbytes buf:消息队列管理结构体,请参见消息队列内核结构说明部分 函数返回值 成功:0 出错:-1,错误原因存于error中 错误代码 EACCESS:参数cmd为IPC_STAT,确无权限读取该消息队列 ...