mmapのサポート

したものをコミット。shmget & shmatしていた所をmmapに変更しただけ。mmapはプロセス終了時に後始末しなくてもOSがunmapしてくれるから楽ね。
ちょっととまどったのが、mmapの使い方。かすかな記憶では、共有メモリとして使うときは/dev/zeroをmmapするんだったと思ったんだけど、最近は違うみたい。flagにMAP_ANONを指定すると、ファイルディスクリプタを無視してmmapしてくれるので(実際には-1を指定)、/dev/zeroとかをopenしなくてもいい。
この値、システムによってMAP_ANONだったりMAP_ANONYMOUSだったり違うみたいなんだけど、Mac OS XはMAP_ANONだし、LinuxでもMAP_ANONを受け付けるようなので、MAP_ANONに。
Linuxなんかでも、システムの共有メモリ最大サイズを気にしなくていいのはメリットかも。こっちデフォルトにするというのもありかなぁ。