Como criar Unix Domain Socket com permissões específicas em C?
Eu tenho um código simples, como:
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);
eu queroatomicamente crie o arquivo Unix Domain Socket com permissões específicas, digamos:0777
. O manual não diz nada sobre permissões de arquivo de soquete em relação aumask
como queiras. Mesmo se oumask
afeta o arquivo de soquete, então não é uma maneira atômica - no programa multi-threaded.
Espero que haja uma maneira de atingir meu objetivo sem usar a sincronização deumask()
chamadas.