POSIX message queue changes from 20020301?
    Jay Monkman 
    jtm at smoothsmoothie.com
       
    Thu Dec  5 23:14:26 UTC 2002
    
    
  
I'm trying to update my application from the 20020301 snapshot to the
latest one, and some code that uses POSIX message queues now fails.
I create and open a message queue for read/write. Then I open it again
(as in another thread) write-only. When I write to the second instance of
it, I get an error - "Bad file number". 
Here's a test case the causes the problem:
void qtest(void)
{
    struct mq_attr attr;
    mqd_t mqfd_rw; 
    mqd_t mqfd_wo; 
    int errno;
    char buf[] = "this is a test buffer";
    attr.mq_msgsize = 400;
    attr.mq_maxmsg = 50;
 
    mqfd_rw = mq_open("msgq", (O_CREAT|O_RDWR), (S_IRUSR|S_IWUSR), &attr); 
    mqfd_wo = mq_open("msgq", O_WRONLY);
    if (mq_send(mqfd_wo, buf, strlen(buf), 10) == -1) {
        printf("mq_send returned an error: %d (%s)\n", errno, strerror(errno));
        sleep(15);
        rtemsReboot();
    }
}
Am I doing something I'm not supposed to be doing? Thanks for any help.
-- 
Jay Monkman	    The truth knocks on the door and you say "Go away, I'm 
                    looking for the truth," and so it goes away. Puzzling.
		     - from _Zen_and_the_Art_of_Motorcycle_Maintenance_
    
    
More information about the users
mailing list