module System.Process.Concurrent where
import System.Console.Concurrent
import System.Console.Concurrent.Internal (ConcurrentProcessHandle(..))
import System.Process hiding (createProcess, waitForProcess)
import System.IO
import System.Exit
createProcess :: CreateProcess -> IO (Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle)
createProcess :: CreateProcess
-> IO (Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle)
createProcess CreateProcess
p = do
(Maybe Handle
i, Maybe Handle
o, Maybe Handle
e, ConcurrentProcessHandle ProcessHandle
h) <- CreateProcess
-> IO
(Maybe Handle, Maybe Handle, Maybe Handle, ConcurrentProcessHandle)
createProcessConcurrent CreateProcess
p
forall (m :: * -> *) a. Monad m => a -> m a
return (Maybe Handle
i, Maybe Handle
o, Maybe Handle
e, ProcessHandle
h)
waitForProcess :: ProcessHandle -> IO ExitCode
waitForProcess :: ProcessHandle -> IO ExitCode
waitForProcess = ConcurrentProcessHandle -> IO ExitCode
waitForProcessConcurrent forall b c a. (b -> c) -> (a -> b) -> a -> c
. ProcessHandle -> ConcurrentProcessHandle
ConcurrentProcessHandle