如何从Haskell中的分叉进程读取数据?

时间:2011-04-29 16:16:08

标签: haskell process system

谁可以给我一个简短的例子,我可以调用一些系统命令,然后用haskell读取它,例如打印出来吗?

我知道我可以使用System.Cmd来制作系统命令,如:nm,ls,mkdir等。

但我也不需要只调用它们我需要阅读它并使用readed字符串进行一些操作

2 个答案:

答案 0 :(得分:7)

要使用的密钥库是the process package,它提供System.Process

调用命令并获取其输出:

readProcess
      :: FilePath   -- command to run
      -> [String]   -- any arguments
      -> String         -- standard input
      -> IO String  -- stdout

像这样:

import System.Process

main = do
    s <- readProcess "/bin/date" [] []
    putStrLn $ "The date is " ++ s

以:

运行
The date is Fri Apr 29 09:29:29 PDT 2011

答案 1 :(得分:2)

System.Process具有您想要的功能,具体为readProcess

main = do
  wcOut <- readProcess "wc" ["/usr/share/dict"] []
  let numLines = read (head (words wcOut)) :: Int
  if numLines > 10 then return () else print "That's a small dictionary."