Hi,
i think it is worth a mail thread to investigate the problem mentioned
by Van Snyder in the course of thread "where does command output go".
Van Snyder wrote:
my program opens MyFifo (created by mkfifo if it
doesn't already exist) for reading and then runs "zcat TheFile.gz | MyFifo"
If one of the files is big, instead of zcat blocking until my program
consumes more data, they both block.
Is the "|" in "zcat TheFile.gz | MyFifo" a typo ?
I get an immediate error
-bash: MyFifo : Permission denied
When using the fifo as file target, i don't have problems with large
data.
In one terminal window i do
zcat file.gz > MyFifo
which blocks until i run in another terminal window:
wc MyFifo
which after about 7 seconds reports:
10476860 30976353 601600000 MyFifo
The same happens if i start the data consumer first
wc MyFifo
and only then the data producer
zcat file.gz > MyFifo
In both cases, the first process blocks until the other gets started.
Then processing goes plausibly fast.
So please test that above gestures work for you as experienced by me.
If so, then it is worth that you explain in more detail what your
programs do differently.
If above does not work for you, then the version numbers of Debian and
of the Linux kernel would be of interest. (Not that i would have an
idea what could go wrong ...)
Have a nice day :)
Thomas