在UNIX域中使用套接字时,建议对本地磁盘上安装的目录目录使用路径名。 UNIX域仅允许进程在同一台机器上进行通信。
你能解释一下上面这行吗?它是关于UNIX DOMAIN中的一个套接字。
谢谢!
答案 0 :(得分:12)
Unix域套接字或IPC套接字(进程间通信套接字)是一种类似于Internet套接字的数据通信端点,但不使用网络协议进行通信。它在POSIX操作系统中用于进程间通信。正确的标准POSIX术语是POSIX本地IPC套接字。
Unix域连接显示为字节流,非常类似于网络连接,但所有数据都保留在本地计算机中。 UNIX域套接字使用文件系统作为地址名称空间,即它们被进程引用为文件系统中的inode。这允许两个不同的进程打开同一个套接字以进行通信。但是,实际通信(数据交换)不使用文件系统,而是使用内核内存中的缓冲区。
除了发送数据外,进程还可以使用sendmsg()和recvmsg()系统调用在Unix域套接字连接上发送文件描述符。
答案 1 :(得分:4)
UNIX域套接字的端点由文件系统中的文件(而不是主机/端口)表示。
然而,进程之间的通信是在本地系统内完成的,并不会导致可搜索文件存储在任何地方。
使用文件系统作为端点命名空间的优点是可以应用普通文件权限和ACL - 如果无法打开端点,则无法连接。 IP套接字没有这样的机制。
答案 2 :(得分:4)
这意味着如果在两台计算机A和B之间共享的NFS磁盘上创建一个AF_UNIX套接字,则无法在A上写入数据到unix套接字,B上的进程从该套接字读取数据。
通信发生在内核级别,您只能在位于同一内核中的进程之间传输数据。