aboutsummaryrefslogtreecommitdiffhomepage
path: root/System/Posix
diff options
context:
space:
mode:
Diffstat (limited to 'System/Posix')
-rw-r--r--System/Posix/Process.hsc62
1 files changed, 50 insertions, 12 deletions
diff --git a/System/Posix/Process.hsc b/System/Posix/Process.hsc
index 248c2e2..e42884f 100644
--- a/System/Posix/Process.hsc
+++ b/System/Posix/Process.hsc
@@ -29,12 +29,13 @@ module System.Posix.Process (
-- ** Process environment
getProcessID,
getParentProcessID,
- getProcessGroupID,
-- ** Process groups
- createProcessGroup,
+ getProcessGroupID,
+ getProcessGroupIDOf,
+ createProcessGroupFor,
joinProcessGroup,
- setProcessGroupID,
+ setProcessGroupIDOf,
-- ** Sessions
createSession,
@@ -58,6 +59,10 @@ module System.Posix.Process (
getAnyProcessStatus,
getGroupProcessStatus,
+ -- ** Deprecated
+ createProcessGroup,
+ setProcessGroupID,
+
) where
#include "HsUnix.h"
@@ -118,11 +123,20 @@ getProcessGroupID = c_getpgrp
foreign import ccall unsafe "getpgrp"
c_getpgrp :: IO CPid
--- | @'createProcessGroup' pid@ calls @setpgid@ to make
+-- | @'getProcessGroupIDOf' pid@ calls @getpgid@ to obtain the
+-- 'ProcessGroupID' for process @pid@.
+getProcessGroupIDOf :: ProcessID -> IO ProcessGroupID
+getProcessGroupIDOf pid =
+ throwErrnoIfMinus1 "getProcessGroupIDOf" (c_getpgid pid)
+
+foreign import ccall unsafe "getpgid"
+ c_getpgid :: CPid -> IO CPid
+
+-- | @'createProcessGroupFor' pid@ calls @setpgid@ to make
-- process @pid@ a new process group leader.
-createProcessGroup :: ProcessID -> IO ProcessGroupID
-createProcessGroup pid = do
- throwErrnoIfMinus1_ "createProcessGroup" (c_setpgid pid 0)
+createProcessGroupFor :: ProcessID -> IO ProcessGroupID
+createProcessGroupFor pid = do
+ throwErrnoIfMinus1_ "createProcessGroupFor" (c_setpgid pid 0)
return pid
-- | @'joinProcessGroup' pgid@ calls @setpgid@ to set the
@@ -131,11 +145,11 @@ joinProcessGroup :: ProcessGroupID -> IO ()
joinProcessGroup pgid =
throwErrnoIfMinus1_ "joinProcessGroup" (c_setpgid 0 pgid)
--- | @'setProcessGroupID' pid pgid@ calls @setpgid@ to set the
--- 'ProcessGroupID' for process @pid@ to @pgid@.
-setProcessGroupID :: ProcessID -> ProcessGroupID -> IO ()
-setProcessGroupID pid pgid =
- throwErrnoIfMinus1_ "setProcessGroupID" (c_setpgid pid pgid)
+-- | @'setProcessGroupIDOf' pid pgid@ calls @setpgid@ to set the
+-- 'ProcessGroupIDOf' for process @pid@ to @pgid@.
+setProcessGroupIDOf :: ProcessID -> ProcessGroupID -> IO ()
+setProcessGroupIDOf pid pgid =
+ throwErrnoIfMinus1_ "setProcessGroupIDOf" (c_setpgid pid pgid)
foreign import ccall unsafe "setpgid"
c_setpgid :: CPid -> CPid -> IO CInt
@@ -396,3 +410,27 @@ foreign import ccall unsafe "exit"
c_exit :: CInt -> IO ()
-- -----------------------------------------------------------------------------
+-- Deprecated or subject to change
+
+{-# DEPRECATED createProcessGroup "This function is subject to change in future versions." #-}
+-- | @'createProcessGroup' pid@ calls @setpgid@ to make
+-- process @pid@ a new process group leader.
+-- This function is currently deprecated,
+-- and might be changed to making the current
+-- process a new process group leader in future versions.
+createProcessGroup :: ProcessID -> IO ProcessGroupID
+createProcessGroup pid = do
+ throwErrnoIfMinus1_ "createProcessGroup" (c_setpgid pid 0)
+ return pid
+
+{-# DEPRECATED setProcessGroupID "This function is subject to change in future versions." #-}
+-- | @'setProcessGroupID' pid pgid@ calls @setpgid@ to set the
+-- 'ProcessGroupID' for process @pid@ to @pgid@.
+-- This function is currently deprecated,
+-- and might be changed to setting the 'ProcessGroupID'
+-- for the current process in future versions.
+setProcessGroupID :: ProcessID -> ProcessGroupID -> IO ()
+setProcessGroupID pid pgid =
+ throwErrnoIfMinus1_ "setProcessGroupID" (c_setpgid pid pgid)
+
+-- -----------------------------------------------------------------------------