hello!

    I've got a program that creates a named pipe, and then spawns a
thread
which sits in a loop:

    // error checking snipped.
    //
    while (1) {
        int fifo = open(fifoPath, O_RDONLY);  // this blocks
        fprintf(stderr, "somebody opened the other end!\n");
        read(fifo, buf, sizeof(buf));
        fprintf(stderr, "got the following data: %s\n", buf);
        close(fifo);
    }

    i then have another instance of the same program do the following:

    fifo = open(fifoPath, O_WRONLY);
    write(fifo, buf, strlen(buf);


    now, the problem is that the first process succeeds suddenly for
the
open, reads the data, closes the fifo, and IMMEDIATELY SUCCEEDS THE
open(2)
again, reading in the same data.
 After that, all is as expected.  

    Note that this doesn't happen ALL the time -- only about 80% of the
time.

    Any idea why this would happen?

    Thanks!

    marc.



To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message

Reply via email to