How do I code a Mono Daemon

I'm trying to write a Mono C# daemon for linux.

I'd like to do a starts and stops of it when its done processing instead of just killing the process.

Does anyone have any examples of this?

Edit: I figured out how to use start-stop-daemon --background in debian, so I think I'll just use that for now.

Edit: I'm implementing this in java as well and they have this nice addShutdownHook that catches terminating the app. I need to spend a little more time sorting out the dependencies for mono service, or find a way to catch app termination.

There is the SessionEnd event, but thats only available for services and not console apps

Answer: using mono-service to wrap a windows service on linux


You should implement a service and use mono-service. Google for it and you'll find several examples.


To receive notifications in the Unix way, that is using signals, you want to use the Mono.Unix.UnixSignal for each signal that you plan on receiving and then call UnixSignal.WaitAny () on an array of signals.


You would typically do this on a separate thread.


A simple method would be to listen on a (local, high) port and receive commands from a management client, like bind does.

A more unix-ish way would be to register a signal handler using UnixSignal and shutdown properly on receiving a certain signal. See the Mono FAQ, "Can I use signal handlers with Mono?" for caveats and an example.

lupus has found mono-service, which is a hosting process using the ServiceProcess interfaces. Sadly this requires setting MONO_DISABLE_SHM , which disables some features in Mono, in particular cross-process IPC systems.

链接地址: http://www.djcxy.com/p/15932.html

上一篇: 制作Linux Web服务的最佳方式是什么?

下一篇: 我如何编码单声道守护进程