yes, you're right with your example: in my case instead of cat file.fifo >/dev/null i use my Perl script to read the FIFO.
Your example works fine for me as well, so i believe there's smth wrong with my Perl script.
I've checked there are no processes left after Ctrl-C the script.
Here's the sequence of steps i perform:
1. Start the script that opens file.fifo and wait for data to arrive
2. in the shell: echo "test" > file.fifo. This works fine, the script reads "test" with no problems
3. Ctrl-C my Perl script
4. do echo "test" > file.fifo again. Result - "Text file busy"