Jules Bean wrote:
Maurí­cio wrote:
Hi,

How can I call a program (like, for instance,
'grep text *') and get the standard output?
All actions I found (executeFile, system) do
not give me the output of the program.

http://haskell.org/ghc/docs/latest/html/libraries/process-1.0.0.0/System-Process.html
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

I was using the following:
{-
 A small function for blindly running a process until it completes
 its output and then waiting for its exit code.
 We return both the output (excluding stderr) plus the exit code.
-}
getProcessOutput :: String -> IO (String, ExitCode)
getProcessOutput command =
    -- Create the process
 do (_pIn, pOut, pErr, handle) <- runInteractiveCommand command
    -- Wait for the process to finish and store its exit code
    exitCode <- waitForProcess handle
    -- Get the standard output.
    output   <- hGetContents pOut
    -- return both the output and the exit code.
    return (output, exitCode)

You'll need the following imports:
import System.IO
 ( hGetContents )
import System.Process
 ( runInteractiveCommand
 , waitForProcess
 )
import System.Exit
 ( ExitCode ( .. ) )

regards
allan



_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to