unix domain socket
关闭socket并不会删除文件,重复bind会失败。所以在bind之前要unlink该文件。
open服务器的实现只是简单地看了一下,大致上就是通过unix domain socket传递了打开的fd和相应的权限,而不是文件内容。数据通过sendmsg和recvmsg这两api来实现。
这样的好处,是打开的逻辑和客户端实现解耦,同时也屏蔽了一些细节(比如设备、文件等)。相比库函数,这样的方式更便于更新。
然后是getopt这个函数的用法。这是写工具经常会用到的。注意--的用法,可以停止参数解析。
open服务器第一版是通过fork一个服务器进程(调用execl),然后通过它来完成一些细节。
第二版是直接以damemon的形式或者交互的形式,避开fork和execl。分开执行。