-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmensajes.c
executable file
·43 lines (36 loc) · 1.03 KB
/
mensajes.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
#include "mensajes.h"
struct message {
long type;
char text[1];
};
void queueinit(int *idqueue) {
// Creamos la cola de mensajes con permisos de lectura y escritura
*idqueue = msgget(IPC_PRIVATE, IPC_CREAT | 0666);
// Comprobamos si se pudo crear
if (*idqueue == -1) {
printf("No fue posible crear la cola\n");
exit(-1);
}
// Mandamos un mensaje inicial para que no se trabe al comienzo
queuesignal(*idqueue);
}
void queuewait(int idqueue) {
// Creamos una variable mensaje y procedemos a traernos el siguiente
// mensaje de la cola
struct message msg;
if (msgrcv(idqueue, &msg, sizeof(msg.text), 0, 0) == -1) {
printf("No se pudo recibir el mensaje\n");
exit(-1);
}
}
void queuesignal(int idqueue) {
// Creamos un mensaje nuevo y le pasamos un string vacío
struct message msg;
msg.type = 1;
strcpy(msg.text, "");
// Mandamos el mensaje a la cola
if (msgsnd(idqueue, (void*) &msg, sizeof(msg.text), 0) == -1) {
printf("No fue posible enviar el mensaje\n");
exit(-1);
}
}