私はFreeBSD用のデーモンプログラムを作成しようとしていますが、私はそれをやったことは一度もなく、見た目は非常に難しいです。FreeBSDのデーモンライブラリ
私のデーモンに固有のものを含めることができるライブラリがありますか?
私はFreeBSD用のデーモンプログラムを作成しようとしていますが、私はそれをやったことは一度もなく、見た目は非常に難しいです。FreeBSDのデーモンライブラリ
私のデーモンに固有のものを含めることができるライブラリがありますか?
コメントではなく回答を投稿して申し訳ありません。後者を行うには十分な評判がありません。
FreeBSDのlibcで提供されている関数daemon(3)を調べるとよいでしょう。標準のファイル記述子をクローズし、SIGHUPが効果を持たないように設定するなどの作業を行います。ソースコードはここにある:
http://svnweb.freebsd.org/base/head/lib/libc/gen/daemon.c?view=markup
manページもあります。 (注意してください、ラッパープログラム、デーモン(1)もあります)。また、ポータブルではないことに注意してください(libbsdで利用できるかもしれませんが、わかりません)。
FreeBSDにはlibutil(やはり移植性がありません)が用意されています。これにはPIDファイルを扱うためのpidfile _ *()関数があります。これはデーモンの作成に便利です。他にも考慮すべき点がありますが、これが始めるのに役立ちます。あなたは特定の質問がない限りはるかに言うことができません。
返信いただきありがとうございます、非常に役に立ちました。より具体的なことについては、私もターミナルやcronから送信デーモン(送信リモートによって通信されている、私は信じている)のようなメッセージを送信できるようにしたい。 – Ibolit
デーモンプロセスとクライアントプロセスが常に同じマシン上で実行されることが分かっている場合、最良の方法はUNIXドメインソケットを使用することです。考え方は、デーモンに何らかの標準名(つまり、$ {HOME} /。デーモン/ソケット、あるいは/ var/runの中の何か)を使って起動時にソケットを作成させ、クライアントがこのソケットを探すようにすることです。 beej.us/guide/bgipc/output/html/multipage/unixsock.html 送信にはIPソケットが使用されていて、RPCライブラリがいくつかあるので、もう少し複雑です。 syslogdは例を探すのに適しているかもしれません。 –
(おそらく、unix-domainソケットはファイルシステム内のオブジェクトなので、IPソケットと同じようにURL + portではなくファイル名を使用しているため、同じインターフェースを使用してsocket )、bind()など) –