查看: 16441|回复: 2

[Linux] 消息队列问题

32

主题

48

回帖

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

主题

48

回帖

101

积分

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

使用道具 举报

32

主题

48

回帖

101

积分

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

使用道具 举报

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

本版积分规则