c的消息队列ftok函数

intmain(){key_tkey;intmsgid;intret;structmsg_bufmsgbuf;key=ftok("/tmp/2",'a');printf(... int main()
{
key_t key;
int msgid;
int ret;
struct msg_buf msgbuf;

key=ftok("/tmp/2",'a');
printf("key =[%x]\n",key);
msgid=msgget(key,IPC_CREAT|0666); /*通过文件对应*/

if(msgid==-1)
{
printf("create error\n");
return -1;
}

msgbuf.mtype = getpid();
strcpy(msgbuf.data,"test haha");
ret=msgsnd(msgid,&msgbuf,sizeof(msgbuf.data),IPC_NOWAIT);
if(ret==-1)
{
printf("send message err\n");
return -1;
}

memset(&msgbuf,0,sizeof(msgbuf));
ret=msgrcv(msgid,&msgbuf,sizeof(msgbuf.data),getpid(),IPC_NOWAIT);
if(ret==-1)
{
printf("recv message err\n");
return -1;
}
printf("recv msg =[%s]\n",msgbuf.data);

}

发送输出的消息又不是/tmp/2里面的内容干么还要设置这个文件路径,感觉ftok像是多余一样,有知道原理的解释一下的吗
还有getpid()是获取当前进程的IP号吗,如果是,为什么这么做
展开
 我来答
winnxm9612233
2013-10-28
知道答主
回答量:4
采纳率:0%
帮助的人:3万
展开全部
同一段程序,用于保证两个不同用户下的两组相同程序获得互不干扰的IPC键值。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式