challenge 指定コマンドを別プロセスで起動

与えられた文字列のコマンドを、別プロセスで実行してください。 異なるPIDのプロセスが立ち上がり、指定したコマンドを実行することが条件です。

あわせて、実行結果のリターンコードと、別プロセスが出力した標準出力を受け取る方法も記載してください。

今回投稿する上で、別プロセスとして実行するコマンドの与え方は自由ですが、実行した結果、何らかの損害を与えるようなコマンドは埋め込まないようにお願いします。

Posted feedbacks - Haskell

System.Processモジュールの runInteractiveCommand を使用しています。

同モジュールの waitForProcess は System.Exit モジュールの ExitCode型のIOを返します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
import IO
import System.Process
import System.Exit

run :: String -> IO ()
run cmd = do (ih, oh, eh, ph) <- runInteractiveCommand cmd
             putStrLn =<< hGetContents oh
             status <- waitForProcess ph
             case status of
               ExitSuccess -> putStrLn $ cmd ++ " ok"
               ExitFailure code -> putStr "error: " >> print code

main :: IO ()
main = run "ls -la"

Index

Feed

Other

Link

Pathtraq

loading...