Как создать Unix Domain Socket с определенными разрешениями в C?
У меня есть простой код, например:
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()
звонки.