reanimate-1.1.3.0: unix/Detach.hs
module Detach (detach) where
import Control.Concurrent
import Control.Monad
import System.Posix.IO
import System.Posix.Process (createSession, forkProcess)
detach :: IO () -> IO Bool
detach daemon = do
void $ forkProcess $ do
devnull <- openFd "/dev/null" ReadWrite Nothing defaultFileFlags
void $ dupTo devnull stdInput
void $ dupTo devnull stdOutput
void $ dupTo devnull stdError
closeFd devnull
void createSession
void $ forkProcess daemon
threadDelay (10^(6::Int))
return True