#include <stdio.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <stdlib.h>
#include <string.h>
#include "queue.h"
void report_and_exit(const char* msg) {
perror(msg);
exit(-1);
}
int main() {
key_t key = ftok(PathName, ProjectId);
if (key < 0) report_and_exit("couldn't get key...");
int qid = msgget(key, 0666 | IPC_CREAT);
if (qid < 0) report_and_exit("couldn't get queue id...");
char* payloads[] = {"msg1", "msg2", "msg3", "msg4", "msg5", "msg6"};
int types[] = {1, 1, 2, 2, 3, 3};
int i;
for (i = 0; i < MsgCount; i++) {
queuedMessage msg;
msg.type = types[i];
strcpy(msg.payload, payloads[i]);
msgsnd(qid, &msg, sizeof(msg), IPC_NOWAIT);
printf("%s sent as type %i\n", msg.payload, (int) msg.type);
}
return 0;
}
#include <stdio.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <stdlib.h>
#include "queue.h"
void report_and_exit(const char* msg) {
perror(msg);
exit(-1);
}
int main() {
key_t key= ftok(PathName, ProjectId);
if (key < 0) report_and_exit("key not gotten...");
int qid = msgget(key, 0666 | IPC_CREAT);
if (qid < 0) report_and_exit("no access to queue...");
int types[] = {3, 1, 2, 1, 3, 2};
int i;
for (i = 0; i < MsgCount; i++) {
queuedMessage msg;
if (msgrcv(qid, &msg, sizeof(msg), types[i], MSG_NOERROR | IPC_NOWAIT) < 0)
puts("msgrcv trouble...");
printf("%s received as type %i\n", msg.payload, (int) msg.type);
}
if (msgctl(qid, IPC_RMID, NULL) < 0)
report_and_exit("trouble removing queue...");
return 0;
}
Comments