如何创建具有特定权限的Unix域套接字?

前端之家收集整理的这篇文章主要介绍了如何创建具有特定权限的Unix域套接字?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个简单的代码,如:
sockaddr_un address;
address.sun_family = AF_UNIX;
strcpy(address.sun_path,path);
unlink(path);

int fd = socket(AF_UNIX,SOCK_STREAM,0);
bind(fd,(sockaddr*)(&address),sizeof(address));
listen(fd,100);

我想原子地创建具有特定权限的Unix域套接文件,例如:0777.对于umask或其他任何内容,手册不会对套接文件权限发表任何意见。即使,如果umask确实影响套接文件,那么它不是原子的方式 – 在多线程程序中。

我希望有一种方法来实现我的目标,而不使用umask()调用的同步。

另一个解决方案是创建具有所需权限的目录,然后在其中创建套接字(示例代码,不考虑错误检查和缓冲区溢出):
// Create a directory with the proper permissions
mkdir(path,0700);
// Append the name of the socket
strcat(path,"/socket_name");

// Create the socket normally
sockaddr_un address;
address.sun_family = AF_UNIX;
strcpy(address.sun_path,path);
int fd = socket(AF_UNIX,100);
原文链接:https://www.f2er.com/bash/388183.html

猜你在找的Bash相关文章