说到什么是域协议就会出现这么个解释:
unix域协议并不是一个实际的协议族,而是在单个主机上执行客户/服务器通信的一种方法,所用api与在不同主机上执行客户/服务器通信所使用的api相同。unix域协议可以视为ipc方法之一。
我们白话解释下unix域协议在什么情况下使用和怎么使用?
unix域协议主要用在同一台机子的不同进程之间传递套接字。为什么不用tcp或者udp套接字呢?一是因为快。源自berkeley的实现中,unix域套接字往往比通信两端位于同一个主机的tcp套接字快出一倍。二是因为安全。unix套接字能提供额外的安全检查措施。
注意:unix域协议表示协议地址的是路径名,而不是inet域的ip地址和端口号
至于他们的程序和tcpsocket没有什么区别
服务端命令:

客户端命令:
<a href="http://memorymyann.iteye.com/blog/649619">http://memorymyann.iteye.com/blog/649619</a>
<a href="http://hi.baidu.com/wangjianzhong1981/blog/item/d91d1c1073b2e409203f2e4d.html">http://hi.baidu.com/wangjianzhong1981/blog/item/d91d1c1073b2e409203f2e4d.html</a>
#include <sys/socket.h>
int socketpair(int family, int type, int protocol, int sockfd[2]);
1 socketpair创建两个socket,并连接起来,只用于unix域
2 family参数必须为af_local,protocol参数必须为0,
socketpair函数主要用在什么地方呢?当父进程fork出一个子进程的时候,两个进程需要使用unix套接字进行进程间通信,那么socketpair就可以使用到了
发现说什么还是不如写代码实在:
执行程序:
在nginx_process.c中你会看到这个:
这里得到几个信息:
1 solaris 9 没有af_local这个属性,所以使用af_unix属性来代替
2 nginx每个worker进程之间都有channel通道,通道就是使用socketpair创建的