Как читать данные с разветвленных процессов в Haskell? - PullRequest
2 голосов
/ 29 апреля 2011

, который может дать мне короткий пример, где я вызываю какую-то системную команду, а затем зачитываю ее с помощью haskell и, например, распечатать?

я знаю, что могу использовать System.Cmd для создания системных команд, таких как: nm, ls, mkdir и т. Д.

но мне не нужно вызывать их только также, мне нужно прочитать его и выполнить некоторые операции с прочитанной строкой

Ответы [ 2 ]

7 голосов
/ 29 апреля 2011

Используемая библиотека ключей: пакет process , который обеспечивает 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
2 голосов
/ 29 апреля 2011

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