man 7 unix

unix domain socket 是一种用于本机进程间通信的socket

​UNIX domain sockets​用法

#include <sys/socket.h>
#include <sys/un.h>

unix_socket = socket(AF_UNIX, type, 0);
error = socketpair(AF_UNIX, type, 0, int *sv);

描述

        AF_UNIX 也被称为AF_LOCAL 套接字家族中被用来本机进程间高效通信,unix domain sockets 不被命名或者绑定到文件系统中的一个文件(被标记为socket类型)。linux也支持一个抽象的名字空间、不同文件系统有所区别。

  • AF_UNIX可以面向流的socket、也可是面向数据报的socket。当作为面向数据报的socket它可以保持消息边界、并且是可靠的,不需要重排序。
  • 支持通过辅助数据向其他进程传递文件描述符
  • 支持通过辅助数据向其他进程传递凭证(使用域套接字的服务器可以接收客户凭证,这样可以进行额外的安全检查)。
  • 通过文件权限来限制那些进程有权限连接,这不比普通的socket更有优势。

  地址格式

A UNIX domain socket address is represented in the following structure:
#define UNIX_PATH_MAX 108

struct sockaddr_un {
sa_family_t sun_family; /* AF_UNIX */
char sun_path[UNIX_PATH_MAX]; /* pathname */
};