我看到一句代码~~ msgget(rcv_msgid, 0) 后面的参数怎么用0??? 书上说 msgget(rcv_msgid, IPC_CREAT | 0777)这种的 我就不晓得了 为什么 用0?什么意思?
by yanglei0615 - C/C++ - 2005-05-25 19:10:19 阅读(2603) 回复(6)
int msgget(ket_t key,int oflag); #define MQ_KEY1 1234L server.c中我写的 int readfd=msgget(MQ_KEY1,0777) client.c中我写的 int writefd=msgget(MQ_KEY1,0777) 为什么readfd和writefd不同吗?
在fedora7.0平台上写一个消息队列的代码,有一个奇怪的问题请教: 如果用msgget(key, IPC_CREAT | 0600)来创建消息队列,在colinux上的fedora7.0可以正常运行,但是在vmware上的fedora7.0却提示“Permission denied”,如下: [lb@lb server]$ ./server msgget:create: Permission denied 还是在vmware上的fedora7.0,如果用msgget(key, IPC_CREAT | 0000)来创建消息队列,那么,msgget似乎可以了,可是在msgrcv的时候又出错了,...
#include
我用qid = msgget(i, 0),本来想测试一下key是i的消息队列存不存在 可是每次测试i = 0时的是返回值qid都不一样,好像是创建了新的队列 测试过几次之后,发现返回值qid变成了-1, strerror(errno)说device没有足够的空间了 可是ipcs什么队列也显示不出来 这是怎么回事呀 我用的是RedHat Linux 9
本帖最后由 cobber622 于 2010-06-10 08:56 编辑 创建msg队列如下:[code]#define SHARE_KEY 0x1997 if((msgid=msgget((key_t)SHARE_KEY,IPC_CREAT|IPC_EXCL|00666))==-1) { printf("Creat Message Queue Error:%s\a\n",strerror(errno)); return -1; } printf("msgid=%d\n",msgid);[/code]返回值msgid等于0, 所以我用以下代码发送时失败[code] #define PERM S_IRUSR|S_IWUSR if ((msgid = msgget((key_t)SHARE...
1.用此句建立消息队列int msgid = msgget( -1, IPC_CREAT );可以正常通信,问key有范围吗? 2.发现msgget的返回值msqid它总是递增,但是增加的是一个随机数,这个有规律吗? 谢谢
创建msg队列如下:[code]#define SHARE_KEY 0x1997 if((msgid=msgget((key_t)SHARE_KEY,IPC_CREAT|IPC_EXCL|00666))==-1) { printf("Creat Message Queue Error:%s\a\n",strerror(errno)); return -1; } printf("msgid=%d\n",msgid);[/code]返回值msgid等于0, 所以我用以下代码(另一个进程)发送时失败[code] #define PERM S_IRUSR|S_IWUSR if ((msgid = msgget((key_t)SHARE_KEY, PERM)) == -1) { //获取存在的m...
来源:赛迪网 作者:korn 功能描述: 获取与某个键关联的消息队列标识。消息队列被建立的情况有两种: 1.如果键的值是IPC_PRIVATE。 2.或者键的值不是IPC_PRIVATE,并且键所对应的消息队列不存在,同时标志中指定IPC_CREAT。 如果新的消息队列被建立,它关联的msqid_ds数据结构初始化如下: msg_perm.cuid 和 msg_perm.uid设为调用者的有效用户标志; msg_perm.cgid 和 msg_perm.gid设为调用者的有效用户组标志; ms...
linux程序设计中,创建消息队列使用的函数msgget(rcv_msgid, IPC_CREAT | 0666),其中的0666是那些值合并而来的。 书上说总共有9个权限标志,打开ipc.h头文件,没发现有这么多,难道是定义在其他头文件。
我在arm9 Linux2.6内核上面跑的程序,msgget()会返回0,这是怎么回事?同样的程序在x86上跑是正确的:qid = msgget ( key, 0666 | IPC_CREAT ); 无论是查书还是man,都是返回值:如果成功,返回消息队列标识符,如果失败,则返回-1。这种返回0的情况消息队列不可用,又不知道问题在哪里。 有谁遇到过这样的问题?同样还有shmget好像也会返回0