[Socket]Unix socket 运行权限问题

Unix socket 运行权限问题

hongxi.zhu 2023-11-13

问题:socket只能在当前源码目录运行,换个路径或者换个机子运行,如果是服务端,启动则会出现无法bind, 客户端则会出现无法connect

原因:unix socket是基于文件的fd方式访问,socket_path实际上是一个目录+文件(s文件),要确保这个文件有可读写权限

解决方法:在server端listen方法前修改socket_path的文件权限

c 复制代码
#include<sys/stat.h>

...
    chmod(socket_path, 0777); //make sure the socket path has a write permission

    ret = listen(server_fd, 5);
    if ( ret < 0) {
        perror("listen error");
        exit(1);
    }
...
相关推荐
野犬寒鸦10 小时前
从零起步学习并发编程 || 第七章:ThreadLocal深层解析及常见问题解决方案
java·服务器·开发语言·jvm·后端·学习
?re?ta?rd?ed?11 小时前
linux中的调度策略
linux·运维·服务器
hweiyu0011 小时前
Linux 命令:tr
linux·运维·服务器
Trouvaille ~11 小时前
【Linux】应用层协议设计实战(一):自定义协议与网络计算器
linux·运维·服务器·网络·c++·http·应用层协议
allway211 小时前
基于华为taishan200服务器、arm架构kunpeng920 cpu的虚拟化实战
linux·运维·服务器
Junlan2711 小时前
Cursor使用入门及连接服务器方法(更新中)
服务器·人工智能·笔记
CSCN新手听安11 小时前
【linux】高级IO,I/O多路转接之poll,接口和原理讲解,poll版本的TCP服务器
linux·运维·服务器·c++·计算机网络·高级io·poll
熊文豪11 小时前
服务器炸了才知道?Ward+cpolar让异常无处藏
运维·服务器·cpolar
杜子不疼.11 小时前
【Linux】教你在 Linux 上搭建 Web 服务器,步骤清晰无门槛
linux·服务器·前端
荔枝吻11 小时前
忘记服务器密码,在Xshell7中查看已保存密码
运维·服务器·github