| Safe Haskell | Safe-Inferred |
|---|---|
| Language | Haskell2010 |
System.Process.CommunicationHandle.Internal
Synopsis
- newtype CommunicationHandle = CommunicationHandle Fd
- closeCommunicationHandle :: CommunicationHandle -> IO ()
- useCommunicationHandle :: Bool -> CommunicationHandle -> IO Handle
- createCommunicationPipe :: (forall a. (a, a) -> (a, a)) -> Bool -> IO (Handle, CommunicationHandle)
CommunicationHandle: a Handle that can be serialised,
newtype CommunicationHandle Source #
A CommunicationHandle is an operating-system specific representation
of a Handle that can be communicated through a command-line interface.
In a typical use case, the parent process creates a pipe, using e.g.
createWeReadTheyWritePipe or createTheyReadWeWritePipe.
- One end of the pipe is a
Handle, which can be read from/written to by the parent process. - The other end is a
CommunicationHandle, which can be inherited by a child process. A reference to the handle can be serialised (using theShowinstance), and passed to the child process. It is recommended to close the parent's reference to theCommunicationHandleusingcloseCommunicationHandleafter it has been inherited by the child process. - The child process can deserialise the
CommunicationHandle(using theReadinstance), and then useopenCommunicationHandleWriteoropenCommunicationHandleReadin order to retrieve aHandlewhich it can write to/read from.
readCreateProcessWithExitCodeCommunicationHandle provides a high-level API
to this functionality. See there for example code.
Since: 1.6.20.0
Constructors
| CommunicationHandle Fd |
Instances
closeCommunicationHandle :: CommunicationHandle -> IO () Source #
Close a CommunicationHandle.
Use this to close the CommunicationHandle in the parent process after
the CommunicationHandle has been inherited by the child process.
Since: 1.6.20.0
Internal functions
useCommunicationHandle :: Bool -> CommunicationHandle -> IO Handle Source #
Internal function used to define openCommunicationHandleRead and
openCommunicationHandleWrite.
createCommunicationPipe Source #
Arguments
| :: (forall a. (a, a) -> (a, a)) |
|
| -> Bool | whether to pass a handle supporting asynchronous I/O to the child process (this flag only has an effect on Windows and when using WinIO) |
| -> IO (Handle, CommunicationHandle) |
Internal helper function used to define createWeReadTheyWritePipe
and createTheyReadWeWritePipe while reducing code duplication.