C のデーモンに関する一般的な質問がありますが、今のところ回答がありません。
規約や標準のように、デーモンプロセスの制御を実装する方法はありますか?
--残りは補足説明です--
Cでデーモンを作成する方法の基本を教える複数のドキュメントを見てきました。フォーク、ファイル記述子のクローズ、ルートの変更など...問題ありません。そして、プロセスが無限ループに入ると(つまり、デーモンプロセスが作成されると)、それらはすべて停止します。しかし、デーモンのコーディングに関しては、これは道のりの半分にすぎません。どうにかしてそれを制御しなければなりません。さまざまな方法で機能させることができますが、それ以上のものがあると感じています。
このために(すでに実行中のプロセスがあるかどうかを確認するか、実行中のデーモンプロセスを停止するか、または...)、さまざまなアプローチ(UNIXソケット、ファイルロック、pidファイルなど)を長所と短所で見てきました。しかし、それは意見や個人的な好みのように思えました。「どうして…?」または「私はこのようにやった、それは私のために働いた」. そして、これが自由のしるしなのかどうかはわかりません。
つまり、sshd、httpd、syslogd などを見ると、それらはすべて init-scripts またはサービス コマンド (start|stop|status) を介して制御できます。これが標準のようです。しかし、これは多くの人が従おうとする緩い慣習にすぎないのでしょうか?それとも、C 関数の深海にある種の「フレームワーク」があるのでしょうか? 何らかの方法で動作させる必要がありますか?たとえば、プログラムを「停止」引数に応答させ、デーモンプロセスを何らかの方法で終了させますか? それとも、「適切でクリーンなコード」を書くために従うべきであり、ほとんどの環境にうまく統合される、ある種の標準、慣例、UNIX 方式のベスト プラクティスはありますか?
私の主な質問は次のとおりです。それを行う方法はありますか?
もしそうなら、どこでより多くの情報を見つけることができますか? 起動と停止だけでなく、もっと注意すべきことがあると思います。