デーモンとして実行したいCプログラムがあります。私はUbuntu 14.04LTSで働いています。どのようなアプローチが正しいですか?誰でも助けることができますか?
ベストアンサー1
今Ubuntuに答えがあります。
正しい方法は、Ubuntu 14に付属のデーモンマネージャの下にあります。ここで他の人がデーモンとして機能し、ライブラリ関数を呼び出すプログラムを明示的に設計することについて話したのは、daemon()
単に間違っています。皮肉なことに、Ubuntuは3つのLTSバージョンをリリースしました。以前バージョン14 LTS - 実際には2006年のUbuntu 6.10から始まります。それ以来、さまざまな種類のデーモンマネージャが生まれました。
適切なサービス管理を持つ人の正解は次のとおりです。欲しくないdaemon()
あなたに電話欲しくない「デーモンになる」ために特別な措置を講じてください。一部の人々にとって、これは1990年代初頭から正解でした。 2006年にもパーティーは少し遅れたようだった。 ☺それにもかかわらず、過去10年間Ubuntuにはこれが正解でした。
あなたがすることは簡単です。 upstartにプログラムの呼び出し時期と方法を知らせるupstart "作業"ファイルを設定します。新生がそれを呼ぶもう悪魔化してる、制御端末がなく、予測可能で変化しない初期プロセス状態を持ちます。あなたのプログラム特別なことはありません。簡単に実行して、ログとエラーメッセージを通常の方法で標準エラーに書き込みます。 Upstartが標準エラーへの書き込みを処理する方法を作業ファイルで並べ替えることができます。
これヌボリッチレシピ開始イベントとログ処理を制御する個々のセクションを含む、これらのすべての内容について詳しく説明します。こことAskUbuntuにはこのトピックに関する多くのコンテンツがあります。
後でUbuntu 16 LTSにアップグレードすると、世界は劇的に変わります。しかしそれでもコードで特別なことをしないで、デーモンマネージャで実行してください。それでも正解になります。
追加読書
- ジェームズハントとクリントバイラム(2014)。 「快適」。 ヌボリッチレシピ。
- https://unix.stackexchange.com/a/200281/5132
- 内部にUbuntu 14.04のマニュアルページ。モデル。
- ジョナサン・ドボイン・ポラード(2001)。 Unixデーモンを設計する際に避けるべき間違い。一般的な答え。
- https://superuser.com/a/723333/38062
- https://askubuntu.com/a/613814/43344