pytorch 中遇到OSError: AF_UNIX path too long

AF_UNIX path 是指 Unix 域套接字(Unix domain socket)路径,它是一种在同一台机器上的进程之间进行通信的机制,不需要使用网络协议栈,因此比网络套接字更加高效。

Unix 域套接字使用文件系统路径作为标识符,路径通常以 ./ 或者 /tmp/ 开头。Unix 域套接字的路径是一个文件系统路径,可以用来标识一个套接字。当一个进程打开一个 Unix 域套接字时,它会创建一个文件,然后将该文件的路径作为套接字的地址。其他进程可以通过该路径来连接到该套接字,并进行通信。

由于 Unix 域套接字是在同一台机器上的进程之间进行通信,因此它们通常比网络套接字更快,而且更加安全,因为它们不会通过网络传输数据。Unix 域套接字通常用于本地系统服务之间的通信,比如进程间通信(IPC)、Web 服务器和数据库服务器等。

需要注意的是,不同的操作系统对 Unix 域套接字路径的长度和格式有不同的限制,如果路径太长可能会导致一些问题,比如在连接套接字时出现错误。因此,在使用 Unix 域套接字时需要注意路径长度和格式的限制。
Unix 域套接字路径的长度和格式在不同的操作系统上可能会有所不同。下面是一些常见操作系统上 Unix 域套接字路径的限制:

Linux:Linux 的 Unix 域套接字路径最长为 108 个字符,包括结尾的 null 字符。路径可以包含任何字符,但是一般建议使用相对路径或者 /tmp 目录下的路径,以避免路径过长。

macOS:macOS 的 Unix 域套接字路径最长为 104 个字符,包括结尾的 null 字符。路径可以包含任何字符,但是一般建议使用相对路径或者 /tmp 目录下的路径,以避免路径过长。

Windows:Windows 不支持 Unix 域套接字,因此不适用此限制。

需要注意的是,在使用 Unix 域套接字时,路径长度和格式的限制可能会对进程间通信造成影响。如果路径过长,可能会导致连接套接字时出现错误。因此,在使用 Unix 域套接字时需要注意路径长度和格式的限制,尽量使用相对路径或者 /tmp 目录下的路径,并避免路径过长。
OSError: AF_UNIX path too long 的bug常伴随执行工程目录中会出现如

pymp-6santuhp/listener-izz7tbc4
tmp-byl9ry

解决办法
减少通信文件绝对路径长度(推荐107个以下)例如,

  1. 尝试将工程目录的文件路径总字符数减少
  2. 减少工程目录在系统中的层级
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值