デーモン型のようなサーバプログラムは、どうやって作るのが一般的なのでしょうか?

ぱっと思いついたのは、
起動後system関数を用いて常駐専用のプロセスを起動、
以後はパイプ経由でその常駐プログラムを操作・・といった形式なのですが、
ぶっちゃけ、これで良いのでしょうか?