嵌入式爱好者

查看: 14989|回复: 2

[Linux] 消息队列问题

[复制链接]

32

主题

76

帖子

101

积分

扫一扫,手机访问本帖
发表于 2014-12-24 10:15:21 | 显示全部楼层 |阅读模式
本帖最后由 豆腐脑 于 2014-12-25 08:32 编辑

#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<errno.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/ipc.h>
#include<sys/msg.h>
#define MAX_TEXT 2048
struct my_msg_st
{
        long int my_msg_type;
        char some_text[MAX_TEXT];
};

int main(void)
{
        int running=1;
        struct my_msg_st sme_data;
        int msgid2=0;
        int smdi=0;
char buffer[BUFSIZ];
        msgid2=msgget((key_t)124, 0666 | IPC_CREAT); //创建消息队列成功返回0
        if(msgid2==-1)
        {       printf("msgget failed with error:\n");
                exit(EXIT_FAILURE);
        }
        printf("msgget ID with %d:\n", msgid2); //创建消息队列成功输出0
        while(running)
        {
                printf("enter some text:");
                fgets(buffer,BUFSIZ, stdin);
                sme_data.my_msg_type=1;
                strcpy(sme_data.some_text,buffer);
                if(msgsnd(msgid2, (void *)&sme_data, MAX_TEXT, 0)==-1)
                { fprintf(stderr, "msgsed failed\n");
                        exit(EXIT_FAILURE);
                }
                if(strncmp(buffer, "sam", 3)==0)
                {
                        system("ipcs -q");
                        running=0;
                   }
                system("ipcs -q");
        }
        exit(EXIT_SUCCESS);
}
第一次运行后,输出0           
第二、三。。。。次运行后输出为整数,为什么?????????????重启虚拟机后运行的结果:







QQ图片20141224101903.png
QQ图片20141224102956.jpg
回复

使用道具 举报

32

主题

76

帖子

101

积分

 楼主| 发表于 2014-12-24 10:33:41 | 显示全部楼层
第一张图是没重启虚拟机前的结果。
第二张图是重启虚拟机后的运行结果
点评回复 支持 反对

使用道具 举报

32

主题

76

帖子

101

积分

 楼主| 发表于 2014-12-25 08:32:51 | 显示全部楼层
没有人答复????
点评回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )

GMT+8, 2025-3-14 20:21

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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