Friday, 8 November 2013

C program to create message queue and write 3 messages with different priorities and finally displays ( Client/Server)

[singh@00-13-02-56-15-7c message]$ vi server.c

#include <fcntl.h>
#include <sys/stat.h>       
#include <mqueue.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void main()
{

    mqd_t q1;
    char *buf1="Rajneesh";
    char *buf2="Kumar";
    char *buf3="Singh";
   
    q1 = mq_open("/test_q",O_CREAT|O_RDWR,0666,NULL);
    if(q1 == -1)
    {
         printf("Error");
    }

    mq_send(q1,buf1,strlen(buf1),1);
    mq_send(q1,buf2,strlen(buf2),2);
    mq_send(q1,buf3,strlen(buf3),3);
   
    exit(0);
}


[singh@00-13-02-56-15-7c message]$ vi client.c

#include "fcntl.h"         
#include "sys/stat.h"      
#include "mqueue.h"
#include <stdlib.h>
#include <stdio.h>
void main()
{

    mqd_t q2;
    char *buf;
    struct mq_attr *attr1;
    int prio;
    attr1 = malloc(sizeof(struct mq_attr));

    q2 = mq_open("/test_q",O_RDWR);

    if(q2 == -1)
    {
        printf("Error");
    }

    buf = malloc(10*sizeof(char));
    mq_getattr(q2, attr1);

    //In mq_receive, q2 is message queue, buf is buffer size which is pointed by attr1 and prio is the priority.
   
    mq_receive(q2,buf,attr1->mq_msgsize,&prio);   
    printf("Priority= %d",prio);
    printf("\n Message = %s\n",buf);

    mq_receive(q2,buf,attr1->mq_msgsize,&prio);
    printf("Priority= %d",prio);
    printf("\n Message = %s\n",buf);

    mq_receive(q2,buf,attr1->mq_msgsize,&prio);
    printf("Priority= %d",prio);
    printf("\n Message = %s\n",buf);

    mq_receive(q2,buf,attr1->mq_msgsize,&prio);
    printf("Priority= %d",prio);
    printf("\n Message = %s\n",buf);

    exit(0);
}
Output :
[singh@00-13-02-56-15-7c message]$ cc -lrt server.c -o server
[singh@00-13-02-56-15-7c message]$
cc -lrt client.c -o client

[singh@00-13-02-56-15-7c message]$ ./server
[singh@00-13-02-56-15-7c message]$
./client
Priority= 3
 Message = Singh
Priority= 2
 Message = Kumar
Priority= 1
 Message = Rajneesh

 

1 comment:

  1. Playamo Casino (2021) Review - DrmCD
    Read our review 포항 출장마사지 of Playamo Casino ✓ Learn about 고양 출장마사지 bonuses, customer support 광주광역 출장안마 and other important aspects. Casino Bonus: €100 청주 출장안마 Bonus + 오산 출장마사지 200 Free Spins.

    ReplyDelete