#include
#include
#include
#include
#include
#include
#include
#include
struct my_msg_st
{
long int my_msg_type;
char some_text[BUFSIZ];
};
int main(void)
{
int running = 1;
int msgid;
struct my_msg_st some_data;
long int msg_to_recieve = 0;
/* Let us set up the message queue */
msgid = msgget((key_t)1234, 0666 | IPC_CREAT);
if (msgid == -1)
{
perror("msgget failed with error");
exit(EXIT_FAILURE);
}
/* Then the messages are retrieved from the queue, until an end message is
* encountered. lastly the message queue is deleted
*/
while(running)
{
if (msgrcv(msgid, (void *)&some_data, BUFSIZ,
msg_to_recieve, 0) == -1)
{
perror("msgcrv failed with error");
exit(EXIT_FAILURE);
}
printf("You wrote: %s", some_data.some_text);
if (strncmp(some_data.some_text, "end", 3) == 0)
{
running = 0;
}
}
if (msgctl(msgid, IPC_RMID, 0) == -1)
{
perror("msgctl(IPC_RMID) failed");
exit(EXIT_FAILURE);
}
exit(EXIT_SUCCESS);
}
#include
#include
#include
#include
#include
#include
#include
struct my_msg_st
{
long int my_msg_type;
char some_text[BUFSIZ];
};
int main(void)
{
int running = 1;
int msgid;
struct my_msg_st some_data;
long int msg_to_recieve = 0;
/* Let us set up the message queue */
msgid = msgget((key_t)1234, 0666 | IPC_CREAT);
if (msgid == -1)
{
perror("msgget failed with error");
exit(EXIT_FAILURE);
}
/* Then the messages are retrieved from the queue, until an end message is
* encountered. lastly the message queue is deleted
*/
while(running)
{
if (msgrcv(msgid, (void *)&some_data, BUFSIZ,
msg_to_recieve, 0) == -1)
{
perror("msgcrv failed with error");
exit(EXIT_FAILURE);
}
printf("You wrote: %s", some_data.some_text);
if (strncmp(some_data.some_text, "end", 3) == 0)
{
running = 0;
}
}
if (msgctl(msgid, IPC_RMID, 0) == -1)
{
perror("msgctl(IPC_RMID) failed");
exit(EXIT_FAILURE);
}
exit(EXIT_SUCCESS);
}
No comments:
Post a Comment