unliftio-0.2.8.0: The MonadUnliftIO typeclass for unlifting monads to IO (batteries included)

Safe HaskellSafe
LanguageHaskell2010

UnliftIO.Process

Contents

Description

Unlifted System.Process.

Since: unliftio-0.2.5.0

Synopsis

Running sub-processes

data CreateProcess #

Constructors

CreateProcess 

Fields

  • cmdspec :: CmdSpec

    Executable & arguments, or shell command. If cwd is Nothing, relative paths are resolved with respect to the current working directory. If cwd is provided, it is implementation-dependent whether relative paths are resolved with respect to cwd or the current working directory, so absolute paths should be used to ensure portability.

  • cwd :: Maybe FilePath

    Optional path to the working directory for the new process

  • env :: Maybe [(String, String)]

    Optional environment (otherwise inherit from the current process)

  • std_in :: StdStream

    How to determine stdin

  • std_out :: StdStream

    How to determine stdout

  • std_err :: StdStream

    How to determine stderr

  • close_fds :: Bool

    Close all file descriptors except stdin, stdout and stderr in the new process (on Windows, only works if std_in, std_out, and std_err are all Inherit)

  • create_group :: Bool

    Create a new process group

  • delegate_ctlc :: Bool

    Delegate control-C handling. Use this for interactive console processes to let them handle control-C themselves (see below for details).

    On Windows this has no effect.

    Since: process-1.2.0.0

  • detach_console :: Bool

    Use the windows DETACHED_PROCESS flag when creating the process; does nothing on other platforms.

    Since: process-1.3.0.0

  • create_new_console :: Bool

    Use the windows CREATE_NEW_CONSOLE flag when creating the process; does nothing on other platforms.

    Default: False

    Since: process-1.3.0.0

  • new_session :: Bool

    Use posix setsid to start the new process in a new session; does nothing on other platforms.

    Since: process-1.3.0.0

  • child_group :: Maybe GroupID

    Use posix setgid to set child process's group id; does nothing on other platforms.

    Default: Nothing

    Since: process-1.4.0.0

  • child_user :: Maybe UserID

    Use posix setuid to set child process's user id; does nothing on other platforms.

    Default: Nothing

    Since: process-1.4.0.0

  • use_process_jobs :: Bool

    On Windows systems this flag indicates that we should wait for the entire process tree to finish before unblocking. On POSIX systems this flag is ignored.

    Default: False

    Since: process-1.5.0.0

data CmdSpec #

Constructors

ShellCommand String

A command line to execute using the shell

RawCommand FilePath [String]

The name of an executable with a list of arguments

The FilePath argument names the executable, and is interpreted according to the platform's standard policy for searching for executables. Specifically:

  • on Unix systems the execvp(3) semantics is used, where if the executable filename does not contain a slash (/) then the PATH environment variable is searched for the executable.
  • on Windows systems the Win32 CreateProcess semantics is used. Briefly: if the filename does not contain a path, then the directory containing the parent executable is searched, followed by the current directory, then some standard locations, and finally the current PATH. An .exe extension is added if the filename does not already have an extension. For full details see the documentation for the Windows SearchPath API.
Instances
Eq CmdSpec 
Instance details

Defined in System.Process.Common

Methods

(==) :: CmdSpec -> CmdSpec -> Bool #

(/=) :: CmdSpec -> CmdSpec -> Bool #

Show CmdSpec 
Instance details

Defined in System.Process.Common

IsString CmdSpec

construct a ShellCommand from a string literal

Since: process-1.2.1.0

Instance details

Defined in System.Process.Common

Methods

fromString :: String -> CmdSpec #

data StdStream #

Constructors

Inherit

Inherit Handle from parent

UseHandle Handle

Use the supplied Handle

CreatePipe

Create a new pipe. The returned Handle will use the default encoding and newline translation mode (just like Handles created by openFile).

NoStream

No stream handle will be passed

Instances
Eq StdStream 
Instance details

Defined in System.Process.Common

Show StdStream 
Instance details

Defined in System.Process.Common

shell :: String -> CreateProcess #

Construct a CreateProcess record for passing to createProcess, representing a command to be passed to the shell.

proc :: FilePath -> [String] -> CreateProcess #

Construct a CreateProcess record for passing to createProcess, representing a raw command with arguments.

See RawCommand for precise semantics of the specified FilePath.

Simpler functions for common tasks

callProcess :: MonadIO m => FilePath -> [String] -> m () Source #

Lifted callProcess.

Since: unliftio-0.2.5.0

callCommand :: MonadIO m => String -> m () Source #

Lifted callCommand.

Since: unliftio-0.2.5.0

spawnProcess :: MonadIO m => FilePath -> [String] -> m ProcessHandle Source #

Lifted spawnProcess.

Since: unliftio-0.2.5.0

spawnCommand :: MonadIO m => String -> m ProcessHandle Source #

Lifted spawnCommand.

Since: unliftio-0.2.5.0

readCreateProcess :: MonadIO m => CreateProcess -> String -> m String Source #

Lifted readCreateProcess.

Since: unliftio-0.2.5.0

readProcess :: MonadIO m => FilePath -> [String] -> String -> m String Source #

Lifted readProcess.

Since: unliftio-0.2.5.0

withCreateProcess :: MonadUnliftIO m => CreateProcess -> (Maybe Handle -> Maybe Handle -> Maybe Handle -> ProcessHandle -> m a) -> m a Source #

Unlifted withCreateProcess.

Since: unliftio-0.2.5.0

Related utilities

showCommandForUser :: FilePath -> [String] -> String #

Given a program p and arguments args, showCommandForUser p args returns a string suitable for pasting into /bin/sh (on Unix systems) or CMD.EXE (on Windows).

Process completion

waitForProcess :: MonadIO m => ProcessHandle -> m ExitCode Source #

Lifted waitForProcess.

Since: unliftio-0.2.5.0

getProcessExitCode :: MonadIO m => ProcessHandle -> m (Maybe ExitCode) Source #

Lifted getProcessExitCode.

Since: unliftio-0.2.5.0

terminateProcess :: MonadIO m => ProcessHandle -> m () Source #

Lifted terminateProcess.

Since: unliftio-0.2.5.0

interruptProcessGroupOf :: MonadIO m => ProcessHandle -> m () Source #

Lifted interruptProcessGroupOf.

Since: unliftio-0.2.5.0

Interprocess communication

createPipe :: MonadIO m => m (Handle, Handle) Source #

Lifted createPipe.

Since: unliftio-0.2.5.0

createPipeFd :: MonadIO m => m (FD, FD) Source #

Lifted createPipeFd.

Since: unliftio-0.2.5.0