插件窝 干货文章 linux 套接字文件是什么

linux 套接字文件是什么

套接字 文件 通信 双工 850    来源:    2025-04-28

Linux 套接字文件详解

什么是套接字文件

Linux 套接字文件(Socket File),也称为 Unix 域套接字(Unix Domain Socket),是一种特殊类型的文件,用于同一台机器上进程间通信(IPC)。它提供了一种比网络套接字更高效的通信方式,因为数据不需要经过网络协议栈。

套接字文件的特点

  1. 文件系统可见性:套接字文件在文件系统中可见(通常位于 /tmp/var/run 目录),但不像普通文件那样存储数据
  2. 高效通信:比网络套接字更快,因为没有网络协议开销
  3. 权限控制:可以通过文件系统权限控制访问
  4. 双向通信:支持全双工通信

如何识别套接字文件

ls -l 命令的输出中,套接字文件的类型标识为 s

srwxr-xr-x 1 user group 0 Jan 1 10:00 /tmp/mysocket

文件权限列的第一个字符是 s 表示这是一个套接字文件。

创建套接字文件

可以使用以下方式创建套接字文件:

  1. C 语言:使用 socket() 系统调用,指定 AF_UNIX 作为地址族
  2. 命令行工具socatnc 等工具可以创建和使用套接字文件
  3. 应用程序:许多服务(如 MySQL、Docker)会自动创建套接字文件

常见用途

  1. 数据库连接:如 MySQL 的 /var/run/mysqld/mysqld.sock
  2. 图形界面通信:X Window 系统使用套接字文件
  3. 容器管理:Docker 的 /var/run/docker.sock
  4. 系统服务:许多守护进程使用套接字文件进行通信

套接字文件 vs 命名管道

特性 套接字文件 命名管道 (FIFO)
通信方向 全双工 半双工
连接方式 面向连接 无连接
多客户端支持 支持 不支持
数据边界 保持消息边界 流式

管理套接字文件

  1. 查看已打开的套接字

    ss -a -p --unix
    
  2. 删除套接字文件

    rm /path/to/socket
    

    注意:如果仍有进程在使用该套接字,删除文件系统条目不会立即中断通信

套接字文件是 Linux 系统中进程间通信的重要机制,特别适合需要高性能、低延迟的本地通信场景。