/
subscriber.c
57 lines (44 loc) · 1.11 KB
/
subscriber.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/*
* Example used in following article:
*
* Fronty zpráv podle Systemu V
* https://www.root.cz/clanky/fronty-zprav-podle-systemu-v/
*/
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
typedef struct {
long message_type;
char message_text[100];
} t_message;
int main(void)
{
t_message message;
key_t key;
int queue_id;
int status;
key = ftok("/home/tester/.bashrc", 1234);
if (key == -1) {
perror("Unable to generate key");
return 2;
}
printf("Key: %x\n", key);
queue_id = msgget(key, 0);
if (queue_id == -1) {
perror("Unable to get message queue identifier");
return 2;
}
printf("Message queue identifier: %x\n", queue_id);
while (1) {
status = msgrcv(queue_id, (void*)&message, sizeof(message.message_text), 0, 0);
if (status == -1) {
perror("Can not receive message");
return 1;
}
printf("Message type: %ld\n", message.message_type);
printf("Message text: %s\n", message.message_text);
}
return 0;
}