unlink:删除一个文件,若成功则返回0,否则返回-1,错误原因存于errnounlink()会删除参数pathname指定的文件。如果该文件名为最后连接点,但有其他进程打开了此文件,则在所有关于此文件的文件描述词皆关闭后才会删除。如果参数pathname为一符号连接,则此连接会被删除。
offsetof : #define offsetof (size_t) (((s*)0)->m):stddef.h中定义
(s*)0是骗编译器说有一个指向类(或结构)s的指针,其地址值0
&((s *)0)->m 是要取得类s中成员变量m的地址. 因基址为0,这时m的地址当然就是m在s中的偏移
原因:unix 域套接字的效率高于网络域的套接字:用于统一台机器上运行的进程间通信。
serv_listen:
1 获取socket
2填写sockaddr_un 结构
3 bind
4linsten:告诉内核我是服务器进程
serv_accept:
1accept:获取端口处来请求服务的客户地址
2然后取出套接字状态stat
3判断是否为客户进程来访问
cli_connect
1获取socket
2填写地址:确保套接字名字没被打开:unlink(sun_path)
3bind
4,填写服务器地址
5请求链接connect