搜索
bottom↓
回复: 3

消息队列 linux

[复制链接]

出0入0汤圆

发表于 2010-5-21 16:07:52 | 显示全部楼层 |阅读模式
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<sys/types.h>
#include<sys/msg.h>

#define MSG_TEST "/tmp/8"

struct msg_buf
{
int  mytype;
char data[255];
};

int main(int argc,char **argv)
{
key_t key;
int pid;
int msgid,status;
struct msg_buf msgbuf;
       
        key = ftok(MSG_TEST,'a');
        printf("key = %X\n",key);
       
        msgid = msgget(key,IPC_CREAT|0666);
        if(msgid == -1)
        {
                printf("msg creat err\n");
                return -1;
        }
        memset(&msgbuf,'\0',sizeof(msgbuf));
        msgbuf.mytype = getpid();
        strcpy(msgbuf.data,"hubei huang gang zhi ye ji shu xue yuan---->\n");
        strcat(msgbuf.data,argv[1]);
        status = msgsnd(msgid,&msgbuf,sizeof(msgbuf.data),IPC_NOWAIT);
        if(status == -1)
        {
                printf("send msg err\n");
                return -1;
        }
        memset(&msgbuf,'\0',sizeof(msgbuf));
        status = msgrcv(msgid,&msgbuf,sizeof(msgbuf.data),getpid(),IPC_NOWAIT);       
        if(status == -1)
        {
                printf("rcv msg err\n");
                return -1;
        }
        printf("This is msg:%s\n",msgbuf.data);
        return 0;

}

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2010-5-21 16:11:06 | 显示全部楼层

运行结果 (原文件名:111111111111.jpg)

出0入0汤圆

发表于 2010-5-21 17:48:57 | 显示全部楼层
不是打击你,这程序问题很多啊……

(1) 不是64-bit clean. (这里问题多了去了,比如struct msg_buf的定义就不对;假设了ftok(3)总是返回int类型的keyid)
(2) getpid()引用前未声明,需要添加#include <unistd.h>
(3) 没有判断argc的数值
(4) 出错的时候为啥不用perror(3)来报告出错信息,给用户/自己更多的提示……
(5) 没有任何边界检查,存在buffer overrun的问题

出0入0汤圆

 楼主| 发表于 2010-6-24 09:29:48 | 显示全部楼层
首先谢谢楼上的批评。

我这是MINI2440板子带的DEMO。

还有就是 这只是测试用,就比如 argc这个判断。测试你自己给自己找麻烦!呵呵`做人好执着哦!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-20 14:21

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表