Date: Mon, 26 Feb 2001 12:58:36 -0800 (PST) From: Marc W <mwlist@lanfear.com> To: freebsd-hackers@freebsd.org Subject: Why does a named pipe (FIFO) give me my data twice ??? Message-ID: <200102262058.MAA39013@akira.lanfear.com>
next in thread | raw e-mail | index | archive | help
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 majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200102262058.MAA39013>
