次のような簡単なコードがあります。
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 Domain Socket ファイルをアトミックに作成したいと考えています0777
。マニュアルには、ソケットファイルのアクセス許可については何も書かれていませんumask
。ソケットファイルに影響を与える場合でも、それumask
はアトミックな方法ではありません-マルチスレッドプログラムでは。
呼び出しの同期を使用せずに目標を達成する方法があることを願っていumask()
ます。