Matthew, Does it return immediately when you start it or only when you try to write to the pipe with some client? Here's what I get on my Linux box: $ rm /tmp/dld.fifo && ./pipe & [1] 8603 $ echo -e "1\n2\n3" > /tmp/dld.fifo 1 2 3 pipe: /tmp/dld.fifo: hGetLine: end of file Patrick On Tue, Nov 23, 2010 at 7:55 AM, matthew coolbeth <mac01021@engr.uconn.edu> wrote:
Hello, all.
Three questions:
1> What, if anything, can I do in a Haskell program to do blocking reads from a Linux FIFO? For the curious, there is a small program below that doesn't block, but immediately terminates because of an EOF
2> How could I have found the answer to this question on my own? (The documentation that Google found for me was not completely adequate)
3> Is this sort of question generally regarded as too unixy or not haskelly enough to be appropriate for this mailing list?
Thanks.
--BEGIN PROGRAM-- module Main () where
import Control.Monad import System.IO import System.Posix.Files
pipeString = "/tmp/dld.fifo"
main :: IO () main = do createNamedPipe pipeString $ unionFileModes ownerReadMode ownerWriteMode pipe <- openFile pipeString ReadMode forever (hGetLine pipe >>= putStrLn)
-- mac _______________________________________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/mailman/listinfo/beginners
-- ===================== Patrick LeBoutillier Rosemère, Québec, Canada