由于种种原因,我想在两个进程之间使用unix域套接字进行IPC。
每个进程通过写入套接字并将此事件传递给第二个进程来响应来自外部世界的某些特定类型的异步事件 - 同时 - 每个进程还需要读取来自另一个套接字的数据做一些事情。实质上,在这个模型中,每个进程将有一个套接字和两个线程:一个用于阻塞读取,一个用于写入。
我想知道是否可以使用unix域套接字独立地从/向每个进程读取和写入,而不使用任何显式锁定,这种安全性会隐式保证安全性。如果是的话,我也想知道这个保证在哪里被正式宣称。
答案 0 :(得分:6)
AF_LOCAL
套接字和AF_INET
套接字之间唯一相关的区别是AF_LOCAL
套接字 local 到当前计算机。创建AF_LOCAL
套接字并绑定它与创建AF_INET
套接字并将其绑定到localhost
没有区别。
用于绑定AF_LOCAL
套接字的路径仅用于连接套接字,没有别的。
因此,如果您创建面向连接的AF_LOCAL
套接字(使用SOCK_STREAM
或SOCK_SEQPACKET
),则每个连接都是唯一的,您可以通过相同的侦听连接多个进程(被动) AF_LOCAL
套接字。