У меня есть простой код, например:
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 Domain Socket с определенными правами, например: 0777
. В руководстве ничего не говорится о разрешениях файлов сокетов в отношении umask
или что-то еще. Даже если umask
влияет на файл сокета, то это не атомный путь - в многопоточной программе.
Надеюсь, есть способ достичь моей цели, не используя синхронизацию вызовов umask()
.