ChinaUnix.net
相关文章推荐:

msgget

我看到一句代码~~ 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不同吗?

by surpassgood - Linux环境编程 - 2013-07-11 15:58:10 阅读(1041) 回复(2)

在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的时候又出错了,...

by reer - C/C++ - 2009-03-04 13:43:19 阅读(4063) 回复(5)

#include #include #include #include struct msgbuf { long msgtype ; char msgtext[1024] ; } sndmsg ,rcvmsg; int main() { key_t key ; pid_t pid ; int msgid ; int status ; char str1[] = {"test message:hello!"}; if((pid = fork()) < 0) { perror("(29) fork error") ; exit(1) ; } else if( pid == 0) { /* if((key=ftok("ipc.c",'a'))==-1) ...

by yanghs.dgut - Linux环境编程 - 2007-03-30 18:44:24 阅读(5044) 回复(2)

我用qid = msgget(i, 0),本来想测试一下key是i的消息队列存不存在 可是每次测试i = 0时的是返回值qid都不一样,好像是创建了新的队列 测试过几次之后,发现返回值qid变成了-1, strerror(errno)说device没有足够的空间了 可是ipcs什么队列也显示不出来 这是怎么回事呀 我用的是RedHat Linux 9

by richarddzh - C/C++ - 2005-05-19 10:04:16 阅读(7623) 回复(11)

本帖最后由 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...

by cobber622 - Linux环境编程 - 2012-11-02 23:57:28 阅读(3685) 回复(5)

1.用此句建立消息队列int msgid = msgget( -1, IPC_CREAT );可以正常通信,问key有范围吗? 2.发现msgget的返回值msqid它总是递增,但是增加的是一个随机数,这个有规律吗? 谢谢

by twtyypmb - Linux环境编程 - 2013-11-04 21:44:19 阅读(981) 回复(2)

创建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...

linuxmsggetmsgrcv消息队列

by cobber622 - C/C++ - 2010-06-10 09:06:09 阅读(2770) 回复(0)

来源:赛迪网 作者:korn 功能描述: 获取与某个键关联的消息队列标识。消息队列被建立的情况有两种: 1.如果键的值是IPC_PRIVATE。 2.或者键的值不是IPC_PRIVATE,并且键所对应的消息队列不存在,同时标志中指定IPC_CREAT。 如果新的消息队列被建立,它关联的msqid_ds数据结构初始化如下: msg_perm.cuid 和 msg_perm.uid设为调用者的有效用户标志; msg_perm.cgid 和 msg_perm.gid设为调用者的有效用户组标志; ms...

by sdccf - Linux文档专区 - 2008-04-10 09:47:57 阅读(951) 回复(0)

linux程序设计中,创建消息队列使用的函数msgget(rcv_msgid, IPC_CREAT | 0666),其中的0666是那些值合并而来的。 书上说总共有9个权限标志,打开ipc.h头文件,没发现有这么多,难道是定义在其他头文件。

by avcodec - C/C++ - 2010-02-01 13:01:01 阅读(2788) 回复(2)

我在arm9 Linux2.6内核上面跑的程序,msgget()会返回0,这是怎么回事?同样的程序在x86上跑是正确的:qid = msgget ( key, 0666 | IPC_CREAT ); 无论是查书还是man,都是返回值:如果成功,返回消息队列标识符,如果失败,则返回-1。这种返回0的情况消息队列不可用,又不知道问题在哪里。 有谁遇到过这样的问题?同样还有shmget好像也会返回0

by pilgrim_kevin - C/C++ - 2009-12-01 10:00:22 阅读(3129) 回复(8)