I want to be able to run a program which takes stdin, and write data
to it whenever I feel like it. I can do this with fifo named pipes. e.g.:

txtplay < named_pipe.fifo

echo "Hello World" > named_pipe.fifo

However, this has the disadvantage of the first command exiting
after the second has finished. What I want is the same as:

txtplay

in effect, so I can just stick in my data whenever I like, and not worry
about it seeing end-of-file. Unfortunately, I cannot simply do this, as I
want the data to be sent to it to be processed through a filter before the
program sees it.

Why don't I just load the program each time I want to send data to
it? Too slow.

What I want, basically, is a way of redirecting the output of a
given command to a fifo named pipe, without the end-of-file. While I'm at
it, how does this EOF business work? Is there a special "EOF" command, or is
it when no more data is received, or when the original program outputting
the data exits?

echo does not send an EOF, it sends a new line. You can suppress the new line with the -n option. I guess the EOF you see is the EOF of the file you created. There is a good chance that I'm misunderstanding your issue, so this is only a comment.
– bjanssenJun 9 '14 at 13:01

1

The EOF is created when the echo is terminated, as pointed by @Luno.
– justhalfJun 9 '14 at 16:01

And to answer the EOF question, EOF is written when the file handle closes. If you redirect from a program, you get EOF when that program (echo, in this case) terminates. By encapsulating multiple commands in parenthesis, you only get one EOF when the close parenthesis is reached.

Thank you for your answer. I have thought about this this morning, but that time I couldn't apply it to my use case. Apparently after some more thoughts, it's actually possible. Thanks :)
– justhalfJun 9 '14 at 16:02