Linux守護(hù)進(jìn)程是Linux的后臺服務(wù)進(jìn)程,相當(dāng)于Windows服務(wù),對于為Linux開發(fā)服務(wù)程序的朋友來說,Linux守護(hù)進(jìn)程相關(guān)技術(shù)是必不可少的,因?yàn)檫@個(gè)技術(shù)不僅僅是為了開發(fā)守護(hù)進(jìn)程,還可以拓展到多進(jìn)程,父子進(jìn)程文件描述符共享,父子進(jìn)程通訊、控制等方面,是實(shí)現(xiàn)Linux大型服務(wù)的基礎(chǔ)技術(shù)之一。
去年我也曾寫了一篇關(guān)于守護(hù)進(jìn)程的帖子,名字叫《.NET跨平臺實(shí)踐:用C#開發(fā)Linux守護(hù)進(jìn)程》,這篇文章的的確確實(shí)現(xiàn)了一個(gè)Daemon,不過,它有一個(gè)弱點(diǎn),不能運(yùn)行多線程!
這篇帖子的目的就是進(jìn)一步完善,讓我們寫出一個(gè)功能完整,可以用于生產(chǎn)環(huán)節(jié)的基本的守護(hù)進(jìn)程。
先帖代碼(假設(shè)項(xiàng)目名是daemon):
1 using System; 2 using System.Threading; 3 using System.Timers; 4 using System.Runtime.InteropServices; 5 using System.IO; 6 using System.Text; 7 8 9 /******************************************** 10 * 一個(gè)完整的linux daemon示例,作者宇內(nèi)流云 * 11 ********************************************/ 12 13 namespace daemon 14 { 15 class Program 16 { 17 18 const string DaemonTag = "--daemon."; 19 &