MacはBSDではない
ユーザーランドがBSDでも、カーネルはBSDではない。カーネルはMachベースの独自カーネル。
先日のkqueueが動かない件ですが、原因は「Macだから」でした。案の定と言うか何と言うか。FreeBSDで動かしてもらったら、フツーに動作。
でもlaunchdはkqueueを使っていたような気が…Darwinのソースも手元に置いておかないといけないかな。
それから、マルチスレッド用の非同期Loggerで、パイプだとメッセージ境界が保たれないから、UNIXドメインソケットで(PF_LOCAL)でSOCK_SEQPACKETを使おうと思ったら、"Protocol not supported"と。 on Mac。
Linuxにもっていったら動きました。
それから「BSD manual PF_LOCAL OR AF_LOCAL -linux」で探すと、FreeBSDでも普通に動く気配。
http://ecos.sourceware.org/docs-latest/ref/net-common-tcpip-manpages-socket.html
FreeBSDの開発環境も要るかなぁ。…と、あれ。↑のページ、「BSD System Calls Manual」って書いてあるけど、eCosってRedHatのプロジェクトじゃなかったっけ。RedHatがカーネルにBSD系?
普通に書いていると、どんどんLinux依存になってしまってマズイ。
Linuxが10年後も残っているかと言えば、微妙なんじゃないかと…