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.