[Haskell-cafe] How to waitForProcess?

Ivan Lazar Miljenovic ivan.miljenovic at gmail.com
Wed Sep 5 06:37:34 CEST 2012


On 5 September 2012 13:45, Magicloud Magiclouds
<magicloud.magiclouds at gmail.com> wrote:
> Hi,
>   I have code like this and it leaves lots of zombies of flow-export.
> Then I add waitForProcess.... Well I do not know where to put it.
> Before or after 'hGetContents' both make the program hung.

You're probably being bitten by hGetContents being lazy.  Force the
result of hGetContents (e.g. `evaluate . length =<< hGetContents o ')
and then use waitForProcess.

>
> exportCSV :: FilePath -> IO [String]
> exportCSV file = do
>   csv_ <- withBinaryFile file ReadMode $ \i -> do
>     (_, Just o, _, h) <- createProcess $ CreateProcess (RawCommand
> "/usr/bin/flow-export" ["-f2"]) Nothing Nothing (UseHandle i)
> CreatePipe Inherit True False
>     hGetContents o
>   return $ tail $ lines csv_
>
> --
> 竹密岂妨流水过
> 山高哪阻野云飞
>
> And for G+, please use magiclouds#gmail.com.
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe



-- 
Ivan Lazar Miljenovic
Ivan.Miljenovic at gmail.com
http://IvanMiljenovic.wordpress.com



More information about the Haskell-Cafe mailing list