豆腐脑 发表于 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;
};

int main(void)
{
      int running=1;
      struct my_msg_st sme_data;
      int msgid2=0;
      int smdi=0;
char buffer;
      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         
第二、三。。。。次运行后输出为整数,为什么?????????????重启虚拟机后运行的结果:







豆腐脑 发表于 2014-12-24 10:33:41

第一张图是没重启虚拟机前的结果。
第二张图是重启虚拟机后的运行结果

豆腐脑 发表于 2014-12-25 08:32:51

没有人答复????
页: [1]
查看完整版本: 消息队列问题