* Read error
@ 2002-04-23 8:47 Hemant Mohan
2002-04-23 10:27 ` Glynn Clements
2002-04-23 10:32 ` weener
0 siblings, 2 replies; 3+ messages in thread
From: Hemant Mohan @ 2002-04-23 8:47 UTC (permalink / raw)
To: linux-c-programming
I am writing a program whereby I am opening a FIFO for reading. However the
read is getting blocked though another process has already written to the
FIFO and no other process is accesiing this FIFO.
the program is something like:
Process A
main()
{
int fd;
fd=open(FIFO, RD_ONLY );
read(fd, ....)
}
Process B
main()
{
mkfifo(FIFO, 0664);
fd =open(FIFO, WR_ONLY);
write(fd, ...);
printf("data written to fifo\n");
}
Process B is run before process A, and the printf statement is desiplayed on
the screen.
But I find that inspite of this process B is blocked on the read as if there
is no data in the FIFO.
However if in process B, the open is done in non blocking mode
fd = open(FIFO, RD_ONLY | O_NONBOCK)
then it doesn't block on read, but read returns a negative value and the
errorno is set, with the message "Resource temporarily unavailable".
My question is that why does the read block initially, when there is some
data for it to read. Under what conditions does the read normally block.
Thanks,
Hemant Mohan
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Read error
2002-04-23 8:47 Read error Hemant Mohan
@ 2002-04-23 10:27 ` Glynn Clements
2002-04-23 10:32 ` weener
1 sibling, 0 replies; 3+ messages in thread
From: Glynn Clements @ 2002-04-23 10:27 UTC (permalink / raw)
To: hemantm; +Cc: linux-c-programming
Hemant Mohan wrote:
> My question is that why does the read block initially, when there is some
> data for it to read. Under what conditions does the read normally block.
read() blocks if no data is available.
However, open(O_RDONLY) blocks until something opens the other end of
the pipe for writing, and open(O_WRONLY) blocks until something opens
the other end of the pipe for reading. So, whichever process is run
first will block on open() until the other process calls open().
--
Glynn Clements <glynn.clements@virgin.net>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Read error
2002-04-23 8:47 Read error Hemant Mohan
2002-04-23 10:27 ` Glynn Clements
@ 2002-04-23 10:32 ` weener
1 sibling, 0 replies; 3+ messages in thread
From: weener @ 2002-04-23 10:32 UTC (permalink / raw)
To: linux-c-programming
unsubscribe linux-c-programming
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2002-04-23 10:32 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2002-04-23 8:47 Read error Hemant Mohan
2002-04-23 10:27 ` Glynn Clements
2002-04-23 10:32 ` weener
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).