POpen provides a convenient way of sending string input to a subprocess and reading output from it lazily.
popen :: FilePath -- Command
-> [String] -- Arguments
-> Maybe String -- Input
-> IO (String, String, ProcessID) -- (stdout, stderr, pid)
popen cmd args inp executes
cmd with args in a
forked process. If inp is
Just str then str in sent in a pipe to
the standard input of the process. The output and error
streams from the process are returned, together with the
process id.
popenEnvDir :: FilePath -- Command -> [String] -- Arguments -> Maybe String -- Input -> Maybe [(String, String)] -- Environment -> Maybe FilePath -- Working directory -> IO (String, String, ProcessID) -- (stdout, stderr, pid)
popenEnvDir cmd args inp env dir like
popen executes
cmd with args in a
forked process. If inp is
Just str then str in sent in a pipe to
the standard input of the process. If env
is Just pairs, the command in executed in
the environment specified by pairs,
instead of the current one. If dir is
Just d the command is executed in
directory d instead of the current
directory. The output and error streams from the process
are returned, together with the process id.