Bitbucket is a code hosting site with unlimited public and private repositories. We're also free for small teams!

Close

Haskell bindings for libsystemd-daemon

This package provides (incomplete) Haskell bindings for the libsystemd-daemon library, see sd-daemon(3) for more information.

Example

Implementation of a simple new-style daemon in Haskell:

import System.IO
import System.SD.Daemon
import Control.Concurrent

main :: IO ()
main = do
    log sD_INFO "Initialized."
    sdNotify False [readyVar, statusVar "Startup completed."]
    loop 1
  where
    log lvl msg = hPutStrLn stderr (lvl ++ msg)

    loop count = do
      log sD_INFO $ "Looped " ++ show count ++ " times."
      sdNotify False [statusVar $ "Looped " ++ show count ++ " times."]
      threadDelay 10000000
      loop (count + 1)

Corresponding systemd unit file:

[Unit]
Description=Simple new-style daemon in Haskell

[Service]
ExecStart=/path/to/executable
Type=notify
StandardError=syslog

Recent activity

Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.