8 #define MQNAME "/mytstqueue2"
12 void alarmhandler(int sig)
14 write(1, "timeout\n", 8);
27 attr.mq_msgsize = 128;
28 mq = mq_open(MQNAME, O_CREAT | O_RDWR | O_EXCL, 0666, &attr);
31 status = mq_getattr(mq, &attr);
35 if (pid == 0) { /* child */
41 signal(SIGALRM, alarmhandler);
43 mq = mq_open(MQNAME, O_RDWR);
45 err(1, "child: mq_open");
46 buf = malloc(attr.mq_msgsize);
47 for (j = 0; j < LOOPS; ++j) {
49 status = mq_receive(mq, buf, attr.mq_msgsize, &prio);
51 err(2, "child: mq_receive");
52 for (i = 0; i < attr.mq_msgsize; ++i)
54 err(3, "child: message data corrupted");
56 err(4, "child: priority is incorrect: %d",
63 } else if (pid == -1) {
69 signal(SIGALRM, alarmhandler);
70 buf = malloc(attr.mq_msgsize);
71 for (j = 0; j < LOOPS; ++j) {
72 for (i = 0; i < attr.mq_msgsize; ++i)
75 status = mq_send(mq, buf, attr.mq_msgsize, PRIO);
83 status = mq_close(mq);