Wie erstelle ich einen Unix Domain Socket mit bestimmten Berechtigungen in C?

Ich habe einen einfachen Code wie:

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

Ich möchteatomar Erstellen Sie die Unix Domain Socket-Datei mit bestimmten Berechtigungen, z. B .:0777. Das Handbuch sagt nichts über Socket-Dateiberechtigungen in Bezug aufumask oder Wasauchimmer. Auch wenn dasumask Betrifft das nicht die Socket-Datei, dann ist es keine atomare Methode - im Multithread-Programm.

Ich hoffe, es gibt eine Möglichkeit, mein Ziel zu erreichen, ohne die Synchronisation von zu verwendenumask() Anrufe.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage