Skip to content

Commit

Permalink
Add getPid
Browse files Browse the repository at this point in the history
This allows fetching a process' ID without using `unsafeProcessHandle`.
  • Loading branch information
9999years authored and tomjaguarpaw committed Aug 17, 2024
1 parent d5e9fb3 commit 564b2f8
Showing 1 changed file with 15 additions and 0 deletions.
15 changes: 15 additions & 0 deletions src/System/Process/Typed.hs
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,9 @@ module System.Process.Typed
, checkExitCode
, checkExitCodeSTM

-- ** Process ID
, getPid

-- ** Process streams
, getStdin
, getStdout
Expand All @@ -121,6 +124,7 @@ module System.Process.Typed
-- * Re-exports
, ExitCode (..)
, P.StdStream (..)
, P.Pid

-- * Unsafe functions
, unsafeProcessHandle
Expand Down Expand Up @@ -641,6 +645,17 @@ checkExitCodeSTM p = do
, eceStderr = L.empty
}

-- | Returns the PID (process ID) of a subprocess.
--
-- 'Nothing' is returned if the underlying 'P.ProcessHandle' was already closed.
-- Otherwise a PID is returned that remains valid as long as the handle is
-- open. The operating system may reuse the PID as soon as the last handle to
-- the process is closed.
--
-- @since 0.2.12.0
getPid :: Process stdin stdout stderr -> IO (Maybe P.Pid)
getPid = P.getPid . pHandle

-- | Internal
clearStreams :: ProcessConfig stdin stdout stderr -> ProcessConfig () () ()
clearStreams pc = pc
Expand Down

0 comments on commit 564b2f8

Please sign in to comment.