linux-c-programming.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Problem with read() and named pipe (FIFO)
@ 2004-08-16 14:47 Hossein Mobahi
  2004-08-16 14:57 ` Henry Margies
  2004-08-17  3:21 ` Problem with read() and named pipe (FIFO) joy
  0 siblings, 2 replies; 8+ messages in thread
From: Hossein Mobahi @ 2004-08-16 14:47 UTC (permalink / raw)
  To: linux-c-programming

Hello

There is an executable file, say PRG1, that measures
some quantities by sensors and writes the output to
stdout. I want to grab this output by my own program
PRG2, do some process on it and dump the result on the
screen. Since the whole system is real time, prg1 and
prg2 must run in parallel. The simplest answer could
be "prg1 | prg2", but for some reasons I have to use a
named pipe (FIFO), like "./prg1 > /tmp/mypipe &" and
"./prg2", where mypipe is a named pipe and prg2 reads
it by open() and read().

The problem is that prg1 does not produce any return
(I mean '\n'), and numbers are separated by space.
Therefore, read(fd,n,buf) blocks even if "n" is
smaller than what prg1 has actually written to the
pipe (no matter what n is, even if the pipe's buffer
contains more characters than n, read first waits for
return and onces gets it, it will copy n bytes of the
buffer to buf). On the other hand opening in
non-blocking fashion doesn't help, because I want my
program to wait for the output of prg1. Is there any
way to make read() return once the pipe has more
characters than n? What about defining another
delimiter such as "blank", instead of "return"? Let me
add that I do not want to touch kernel sources, I am
looking for a more portable solution using available
system calls or shell's capabilities.

Thnx

--Hossein



		
__________________________________
Do you Yahoo!?
New and Improved Yahoo! Mail - Send 10MB messages!
http://promotions.yahoo.com/new_mail 

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2004-08-17 19:25 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-08-16 14:47 Problem with read() and named pipe (FIFO) Hossein Mobahi
2004-08-16 14:57 ` Henry Margies
2004-08-17 10:58   ` Problem with read() and named pipe (FIFO) (fflush or fsync) Hossein Mobahi
2004-08-17  3:21 ` Problem with read() and named pipe (FIFO) joy
2004-08-17 10:55   ` Problem with read() and named pipe (FIFO) (pipe not disk) Hossein Mobahi
2004-08-17 17:58     ` joy
2004-08-17 19:24       ` Hossein Mobahi
2004-08-17 19:25       ` Hossein Mobahi

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).