----------------------------------------------------------------------------- -- | -- Module : System.OS -- Copyright : (c) 2020-2021 EMQ Technologies Co., Ltd. -- License : BSD-style (see the LICENSE file) -- -- Maintainer : Feng Lee, feng@emqx.io -- Yang M, yangm@emqx.io -- Stability : experimental -- Portability : portable -- -- The System OS module. -- ----------------------------------------------------------------------------- module System.OS ( findExe , findExeIn , getPid , osName , osFamily , runCmd -- signal , setSignal -- * system time , systemTime , systemTimeIn , perfCounter , perfCounterIn , version , Signal(..) , SigHandler(..) ) where import Control.Monad (IO) import Data.Maybe (Maybe) import Data.Time (TimeUnit, UTCTime) import Data.Unit (Unit) import System.FilePath (FilePath) data Signal = Sighup | Sigquit | Sigabrt | Sigalrm | Sigterm | Sigusr1 | Sigusr2 | Sigchld | Sigstop | Sigtstp data SigHandler = SigDefault | SigHandle | SigIgnore foreign import findExe :: String -> IO (Maybe FilePath) foreign import findExeIn :: String -> FilePath -> IO (Maybe FilePath) -- | Get the Pid of the current OS process. foreign import getPid :: IO Integer -- | Get OS Name. foreign import osName :: IO String -- | Get OS Family. foreign import osFamily :: IO String -- | Executes a Command. foreign import runCmd :: String -> IO String -- | Enables or disables OS signals. foreign import setSignal :: Signal -> SigHandler -> IO () foreign import systemTime :: IO Integer foreign import systemTimeIn :: TimeUnit -> IO Integer foreign import timestamp :: IO UTCTime foreign import perfCounter :: IO Integer foreign import perfCounterIn :: TimeUnit -> IO Integer -- | Get OS Version. foreign import version :: IO String