在上一篇中,我们看到了nginx共享内存方式的进程间通信。这次我们看下nginx使用套接字的进程间通信方式。
同样的几个问题:
1.什么时候需要使用套接字方式的进程间通信机制呢?
举个栗子:我们知道nginx有master进程和worker进程,那么master进程是如何向worker进程发送消息的呢?worker进程又是如何接收master发送过来的消息呢?答案就是使用套接字。注意的是虽然套接字是双工的,但目前套接字仅用于master进程管理worker进程,而没用于worker发消息给master,或者worker进程间通信(参考:《深入理解Nginx》).
2.nginx的套接字是如何实现的呢?
nginx的套接字是本机套接字,即通过socketpair创建的,不是网络套接字(通过socket创建)。
socketpair:
int socketpair(int family, int type, int protocol, int sockfd[2]);
返回值:成功:0;出错:-1
socketpair仅适用于unix域套接字,因此,family必须为AF_LOCAL,protocol必须为0。type