views:

34

answers:

1

I have successfully created the message queue by using the following command:

msgIdHareTurtle =  msgget(keyHareTurtle, 0644 | IPC_CREAT | O_NONBLOCK);  

Now I want to send the queue to some other process I used,

msgsnd(msgIdHareTurtle, (struct msgbuf *)&bufHareTurtle, sizeof(int), IPC_NOWAIT);  

and I try to receive it in different process by:

msgrcv(msgIdHareTurtle, (struct msgbuf *)&bufHareTurtle, sizeof(int), 0, IPC_NOWAIT);

my structure bufHareTurtle is of following type:

typedef struct smsgbuf{
    long mtype;
    unsigned int position;
} smsgbuf; 

My question: The sending was successful and the program(both the processes) is running too but whenever I am sending an unsigned integer for example 2 , I AM ALWAYS GETTING THE RECEIVED VALUE (IN LATTER PROCESS) AS 0 EVRYTIME. Could somebody tell me what is the error in this code or what could be possible error elsewhere.

A: 

The problem was there in synchronization. The sending to the queue was delayed due to sleep inserted in between. I corrected it and the error was gone

D.J.