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