#haskell #process #system
#haskell #процесс #система
Вопрос:
кто может привести мне короткий пример, где я вызываю некоторую системную команду, а затем считываю ее с помощью haskell и, например, печатаю ее?
я знаю, что могу использовать System.Cmd для выполнения системных команд, таких как: nm, ls, mkdir и т.д.
но мне не нужно вызывать только их, мне также нужно прочитать это и выполнить некоторые операции с прочитанной строкой
Ответ №1:
Ключевой библиотекой для использования является process
пакет, который предоставляет System.Процесс.
Вызвать команду и получить ее вывод:
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:
Система.Процесс имеет именно те функции, которые вам нужны 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."