我想要处理通过createProcess
行启动的流程的标准输出,但我不能等到新行可用。我的应用程序将执行以下操作:
我不知道如何实施1.是否有相当于Handle
的{{1}}以每行为基础运作?如果没有,Haskell™解决这个问题的方法是什么?使用hGetBufNonBlocking
和hReady
实现自定义行缓冲或某种形式的并发?
答案 0 :(得分:1)
经过一些修修补补后,我想出了这个,希望它可以帮到你:
255
你的关键功能是dealWithLine :: String -> IO ()
dealWithLine l = putStrLn $ l ++ "; length: " ++ (show $ length l)
main = getContents >>= (\s -> mapM dealWithLine $ lines s)
,它按原样输入,没有阻塞,你可以将它提供给你想要的任何函数来处理stdin。