2010-07-23 39 views
4

我想寫一個通用的(C/C++)庫,我將用它在Linux環境中開發守護進程。我認爲我不會重新發明輪子,而是想知道是否有任何知名的庫正在使用。編寫一個C/C++守護進程(Linux)

該庫可能是C或C++ - 雖然我更喜歡C++(也許是屬於或基於優秀BOOST庫的東西?)。另外,就圖書館選擇標準而言,由於守護進程相當「關鍵任務」組件,如果您提出的庫由一組開發人員主動維護(如BOOST庫[ ),有一個活躍的社區(或者至少有一個郵件列表在面對棘手的情況下訴諸於),而不是一個孤立的個人在那裏...

我看到這個document,這是一個很好的起點點,但它有點過時,所以我想知道是否有更好,更知名/用於那裏...?

BTW,我會在Ubuntu將開發(10.0.4)

+0

[start-stop-daemon](http://linuxreviews.org/man/start-stop-daemon/)可能會幫助 – KitsuneYMG 2010-07-27 14:47:27

回答

7

另一種解決方案是使用進程監視器如supervisord,其管理多個服務,重新啓動他們的時候他們崩潰,提供了一個簡約的網頁查看和控制流程狀態,管理服務組,支持通用狀態更改事件轉發機制和其他好處。這些工具比守護程序庫提供了更多的價值。

+0

+1:哦,快點!爲什麼沒有我想到了那個?!這可以爲我節省很多時間。我會研究它,看看它是否滿足我的要求。 – morpheous 2010-07-23 11:16:23

+0

您正在鏈接的文檔是最新的,因爲在守護進程行爲中自那時以來沒有任何變化。而且,正如馬塞洛所說,supervisord適合這種事情 - 它可以簡化甚至簡單/ bin/cat程序(請參閱supervisord的文檔)。 – andreypopp 2010-07-23 11:41:30

+1

看看這個http://upstart.ubuntu.com/ – 2010-07-24 02:00:39

1

如果您的守護進程使用tcp/ip套接字,則可以使用inet守護進程(或xinetd)。隨着新的傳入連接進入,您的進程將按需啓動。但是,如果進行大規模部署,可能會存在可擴展性問題。

6
#include <unistd.h> 

具有

int daemon(int nochdir, int noclose); 

哪叉,從控制終端detatches,重新打開所有{STDIN,STDOUT,標準錯誤}的到/ dev/null的,並改變工作目錄的根目錄。 (當然是基於標誌)