Как создать 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()
звонки.