bluetile-0.2: bluetiledock/Utils.hs
----------------------------------------------------------------------------
-- |
-- Module : Utils
-- Copyright : (c) Jan Vornberger 2009
-- License : BSD3-style (see LICENSE)
--
-- Maintainer : jan.vornberger@informatik.uni-oldenburg.de
-- Stability : unstable
-- Portability : not portable
--
-----------------------------------------------------------------------------
module Utils where
import System.Posix
import System.IO
-- | Launch an external application through the system shell and return a @Handle@ to its standard input.
spawnPipe :: String -> IO Handle
spawnPipe x = do
(rd, wr) <- createPipe
setFdOption wr CloseOnExec True
h <- fdToHandle wr
hSetBuffering h LineBuffering
forkProcess $ do
createSession
uninstallSignalHandlers
dupTo rd stdInput
executeFile "/bin/sh" False ["-c", x] Nothing
return h
uninstallSignalHandlers :: IO ()
uninstallSignalHandlers = do
installHandler sigCHLD Default Nothing
return ()