Jak utworzyć Unix Domain Socket z określonymi uprawnieniami w C?

Mam prosty kod, taki jak:

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);

chcęatomowo utwórz plik Unix Domain Socket z określonymi uprawnieniami, powiedzmy:0777. Podręcznik nie mówi nic o uprawnieniach do plików gniazd w odniesieniu doumask lub cokolwiek. Nawet jeśliumask wpływa na plik gniazda, więc nie jest to metoda atomowa - w programie wielowątkowym.

Mam nadzieję, że istnieje sposób na osiągnięcie mojego celu bez korzystania z synchronizacjiumask() połączenia.

questionAnswers(3)

yourAnswerToTheQuestion