[Haskell-beginners] Named Pipes Et Cetera

Patrick LeBoutillier patrick.leboutillier at gmail.com
Tue Nov 23 09:09:57 EST 2010


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 at 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 at haskell.org
> http://www.haskell.org/mailman/listinfo/beginners
>



-- 
=====================
Patrick LeBoutillier
Rosemère, Québec, Canada


More information about the Beginners mailing list