- Queue names must begin with a "/"
- When you set the flag O_CREAT you MUST supply an mq_attr structure to the constructor.
- The mq_attr structure parameters must (obviuosly) fit your system constraints
So, here's a slightly different mqueue send example
#define PMODE 0666
#define MSGSIZE 256
int main (){
int i;
int md;
int status;
struct mq_attr attr;
mqd_t mqfd;
attr.mq_maxmsg = 10;
attr.mq_msgsize = MSGSIZE;
attr.mq_flags = 0;
mqfd = mq_open ("/my_queue3", O_WRONLY|O_CREAT,PMODE,&attr);
if (mqfd == -1)
{
perror("couldn't open mqueue");
exit(0);
};
for (i=0; i<10 data-blogger-escaped-br="" data-blogger-escaped-i=""> {
status = mq_send(mqfd,"ciao",4,0);
if (status == -1){
perror("mq_send failure on mqfd");
}
else{
printf("successful send, i = %d\n",i);
}
}
}