t0yv0 / hdaemonize Goto Github PK
View Code? Open in Web Editor NEWUNIX deamon writing utilities for Haskell
License: BSD 3-Clause "New" or "Revised" License
UNIX deamon writing utilities for Haskell
License: BSD 3-Clause "New" or "Revised" License
`hdaemonize-0.2` ================= `hdaemonize` is a simple library that hides some of the complexities of writing UNIX daemons in Haskell. Obtaining ----------- The latest version is available (BSD license) at [GitHub](http://github.com/toyvo/hdaemonize/tree/master). Using ------- The synopsis is: import System.Posix.Daemonize main = daemonize $ program This code will make `program` do what good daemons should do, that is, detach from the terminal, close file descriptors, create a new process group, and so on. If you want more functionality than that, it is available as a `serviced` function. Here is an example: import Control.Concurrent import System.Posix.Daemonize loop i log = do threadDelay $ 10^6 log (show i) writeFile "/tmp/counter" $ show i if i == 5 then undefined else loop (i + 1) log main = serviced (loop 0) Let us say this program is compiled as `mydaemon`. Then: # mydaemon start starts the service. A second call to start will complain that the program is already running. During its execution, mydaemon will simply write a new number to `/tmp/counter` every second, until it reaches 5. Then, an exception will be thrown. This exception will be caught by `hdaemonize`, and logged to `/var/log/daemon.log` or similar (this is depends on how `syslog` works on your platorm). `log (show i)` will leave messages in the same file. When the exception is thrown, the program will be restared in 5 seconds, and will start counting from 0 again. The following commands are also made available: # mydaemon stop # mydaemon restart Finally, `mydaemon` drops privileges. By default it changes the effective user and group ids to those of the `daemon` user, but it prefers to use those of `mydaemon`, if present. Changelog --------- * 0.3 * merged with updates by madhadron * 0.2 * provided documentation * backported to older GHC versions, tested on 6.8.1 * 0.1 * initial public release Authors ------- Anton Tayanovskyy <[email protected]>, bug reports and feature requests welcome. The code is originally based on a public posting by [Andre Nathan](http://sneakymustard.com/), used by permission.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.