这里主要介绍命名UNIX域套接字 1.什么是UNIX域套接字 Unix域协议并不是一个实际的协议族,而是在单个主机上执行客户/服务通信的一种方式。是进程间通信(IPC)的一种方式。...它提供了两类套接字:字节流套接字(有点像TCP)和数据报套接字(有点像UDP) UNIX域数据报服务是可靠的,不会丢失消息,也不会传递出错。...2.UNIX域协议特点 1)UNIX域套接字域TCP套接字相比,在同一台主机的传输速度前者是后者的两倍。...UNIX域套接字仅仅复制数据,并不执行协议处理,不需要添加或删除网络报头,无需计算校验和,不产生顺序号,也不需要发送确认报文 2)UNIX域套接字可以在同一台主机上各进程之间传递文件描述符 3)UNIX...域套接字域传统套接字的区别是用路径名表示协议族的描述 3.UNIX域地址结构 #define UNIX_PATH_MAX 128 struct sockaddr_un{ sa_family_t sun_family
关于什么是UNIX域套接字可以参考:https://cloud.tencent.com/developer/article/1018893 这里主要介绍非命名的UNIX域套接字的用法。...功能:创建一个全双工的流管道 参数: domain:协议家族,为AF_LOCAL或AF_UNIX type:套接字类型。可以是SOCK_STREAM或者SOCK_DGRAM。...为0 sv:返回套接字对,这个是输出参数。返回的两个描述符都是可读可写的。 返回值:成功返回0,失败返回-1....注意:由于创建的每个套接字都是没有名字的,这就意味着无关进程不能使用它们。 2.一个简单的例子: 父进程给子进程发送一个数据给子进程,子进程收到数据后最数据进行加一操作,再发回给父进程。...2)普通的TCP UDP套接字是不能传递文件描述符的
UNIX域套接字与TCP套接字相比较,在同一台主机的传输速度前者是后者的两倍。这是因为,IPC机制本质上是可靠的通讯,而网络协议是为不可靠的通讯设计的。...三、UNIX域套接字编程注意点 1、bind成功将会创建一个文件,权限为0777 & ~umask 2、sun_path最好用一个绝对路径 3、UNIX域协议支持流式套接口与报式套接口 4、UNIX...域流式套接字connect发现监听队列满时,会立刻返回一个ECONNREFUSED,这和TCP不同,如果监听队列满,会忽略到来的SYN,这导致对方重传SYN。...protocol: 协议类型 sv: 返回套接字对 返回值:成功返回0;失败返回-1 实际上socketpair 函数跟pipe 函数是类似的,也只能在同个主机上具有亲缘关系的进程间通信,但...即父进程持有sockfds[0] 套接字进行读写,而子进程持有sockfds[1] 套接字进行读写。 参考: 《Linux C 编程一站式学习》 《TCP/IP详解 卷一》 《UNP》
这篇会结合跨进程通信中的信号和 Unix 域套接字来看 JVM Attach API 的实现原理, 你将获得下面这些相关的知识 信号是什么 如何写一个不能被“轻易”杀死的程序 Unix 域套接字的用法...Unix 域套接字是什么?...Unix 域套接字更加高效,Unix 套接字不用进行协议处理,不需要计算序列号,也不需要发送确认报文,只需要复制数据即可 Unix 域套接字是可靠的,不会丢失报文,普通套接字是为不可靠通信设计的 Unix...域套接字的代码可以非常简单的修改转为普通套接字 域套接字代码示例 下面是一个简单的 C 实现的域套接字的例子。...对于 Attach 的发起方,假设目标进程为 12345,这部分的详细的过程如下: 1、Attach 端检查临时文件目录是否有 .java_pid12345 文件 这个文件是一个 UNIX 域套接字文件
也可以通过/proc/6617/task查看进程6617下有多少个任务(即线程), 也是20个线程,如下....面试题: 如何知道JVM中的线程个数,有哪些方法? 接下来,我们在/tmp目录下创建一个.attach_pid6617文件,如下 接下来,我们使用kill命令向进程发送退出信号....进程间通信的方式有很多,其中信号就是其中一种方式. 关于进程间的通信可以阅读它[ https://www.yuque.com/infuq/language/rvdvcu ] ....看看你公司的服务器是否有这两个线程呢? 接下来我们通过3种方式获取进程6617的线程栈信息. 面试题: 如何得到一个进程的线程栈信息?...在我们的C语言代码里 // 创建Unix Domain Socket用于本机进程间通信 fd = socket(PF_UNIX, SOCK_STREAM, 0); // 连接服务器.
在前面我们介绍了UNIX域套接字编程,更重要的一点是UNIX域套接字可以在同一台主机上各进程之间传递文件描述符。...4、msg_iovlen:当有n个iovec 结构体时,此值为n; 5、msg_control:是一个指向cmsghdr 结构体的指针 struct cmsghdr { socklen_t...域协议才能在进程间传递文件描述符,如果想要在没有亲缘关系的进程间 * 传递,则不能用socketpair函数,要用socket()函数 */ if (socketpair(PF_UNIX...最后提醒一点,只有unix域协议才能在本机进程间传递文件描述符,如果想要在没有亲缘关系的进程间传递,则不能用socketpair函数,要用socket()函 数 才行。...实际上这里通过sendmsg来传递fd,父进程才算是真正打开 了文件,也就是父进程的fd 也指向了file结构体,此file 结构体内的引用计数为2。
Windows下没有 Unix 域套接字,因此这个参数与 Windows 无关。...Windows 下没有 Unix 域套接字,因此这个参数与 Windows 无关。 unix_socket_permissions (integer) 设置 Unix 域套接字的访问权限。...这个参数只有在支持TCP_KEEPIDLE或等效套接字选项的系统或 Windows 上才可以使用。在其他系统上,它必须为零。在通过 Unix 域套接字连接的会话中,这个参数被忽略并且总是读作零。...这个参数只有在支持TCP_KEEPINTVL或等效套接字选项的系统或 Windows 上才可以使用。在其他系统上,必须为零。在通过 Unix域套接字连接的会话中,这个参数被忽略并总被读作零。...这个参数只有在支持TCP_KEEPCNT或等效套接字选项的系统上才可以使用。在其他系统上,必须为零。在通过 Unix 域套接字连接的会话中,这个参数被忽略并总被读作零。
增加 Unix 域套接字通道,其中 Unix 域 (AF_UNIX) 套接字支持添加到 nio.channels 包中的套接字通道和服务器套接字通道 API 中。...该计划还扩展了继承的通道机制,以支持 Unix 域套接字通道和服务器套接字通道。Unix 域套接字用于同一主机上的进程间通信。...它们在很多方面与 TCP/IP 套接字类似,只是它们由文件系统路径名称而不是 IP 地址和端口号寻址。...新功能的目标是支持 Unix 域套接字通道的所有功能,这些功能在主要 Unix 平台和 Windows 中很常见。...格式包括 Windows 上的 msi 和 exe、 MacOs 上的 pkg 和 dmg、以及 Linux 上的 deb 和 rpm 。该工具可以直接从命令行调用,也可以以编程方式调用。
套接字最早是UC Berkeley为BSD操作系统设计的。现在POSIX标准化了套接字。在Linux和Unix下的套接字是一致的。...但是在Windows下,微软为Windows操作系统的应用层和传输层设计了自己独有的一套机制,同时微软也扩展了POSIX标准制定的套接字,形成了Windows独有的WinSocket。...域 地址格式 AF_INET IPv4 AF_INET6 IPv6 AF_UNIX Unix域 AF_UPSPEC 未指定 最后这个AF_UPSPEC实质上是通用的,在早期有些平台支持其他协议。...socket的第二个参数就是表1给出的套接字类型,但是在实现的时候,可以自有增加其他类型的支持。 protocol通常是0,表示给给定的域和套接字类型选择默认的协议。...这在同一域和套接字类型的时候是有用的,可以指定选择某一个特定的协议。 socket函数返回一个套接字描述符,本质上是一个文件描述符。
该版本一共进行了 17 项更新,涉及新特性改进、新工具、孵化功能等,具体有哪些更新,我们一起来看下: 1 新特性 instanceof 模式匹配 在 JDK 16 上,模式匹配允许程序中的通用逻辑,即从对象中提取组件...3 新工具和库 增加 Unix 域套接字通道 其中 Unix 域 (AF_UNIX) 套接字支持添加到 nio.channels 包中的套接字通道和服务器套接字通道 API 中。...该计划还扩展了继承的通道机制,以支持 Unix 域套接字通道和服务器套接字通道。Unix 域套接字用于同一主机上的进程间通信。...它们在很多方面与 TCP/IP 套接字类似,只是它们由文件系统路径名称而不是 IP 地址和端口号寻址。...新功能的目标是支持 Unix 域套接字通道的所有功能,这些功能在主要 Unix 平台和 Windows 中很常见。 包装工具 提供jpackage工具,用于打包独立的Java应用程序。
Windows Sockets规范以U.C.Berkeley大学BSD UNIX中流行的Socket接口为范例定义了一套Microsoft Windows下网络编程接口。...18.5 BSD Sockets简介 Berkeley sockets,又称BSD sockets,是一种应用程序接口,用于网际套接字和Unix域套接字(Unix domain sockets),包括了一个用...然而,由于AT&T的专利保护着Unix,所以只有在1989年伯克利大学才能自由地发布自己的操作系统和网络库。 Berkeley套接字应用程序接口形成了事实上的网络套接字的标准精髓。...这套应用程序接口也被用于Unix域套接字。...select() 用于修整有如下情况的套接字列表:准备读,准备写或者有错误。 poll() 用于检查套接字的状态。套接字可以被测试,看是否可以写入、读取或是有错误。
为了建立通信通道,网络通信的每个端点拥有一个套接字对象极为重要。 套接字为BSD UNIX系统核心的一部分,而且他们也被许多其他类似UNIX的操作系统包括Linux所采纳。...许多非BSD UNIX系统(如ms-dos,windows,os/2,mac os及大部分主机环境)都以库形式提供对套接字的支持。...三种最流行的套接字类型是:stream, datagram, raw。stream和datagram套接字可以直接与TCP协议进行接口,而raw套接字则接口到IP协议。但套接字并不限于TCP/IP。...socket=socket.socket(familly, type) family的值可以是AF_UNIX(Unix域,用于同一台机器上的进程间通讯),也可以是AF_INET(对于IPV4协议的TCP...AF 表示ADDRESS FAMILY 地址族 PF 表示PROTOCOL FAMILY 协议族 在windows中AF_INET与PF_INET完全一样,而在Unix/Linux系统中,在不同的版本中这两者有微小差别
它存储了Unix域套接字的类型(如流式套接字、数据报套接字等)和Socket文件描述符。 UnixStream:表示一个Unix域套接字的流式连接。...UnixStream结构体通过包装了Socket结构体来实现Unix域套接字的功能。 UnixListener:表示Unix域套接字的监听器。...文件定义了与Unix域数据报套接字相关的功能。...Unix域数据报套接字是一种在同一台机器上的进程间进行通信的机制。 文件中的UnixDatagram结构体表示一个Unix域数据报套接字。...,以便在Rust中使用Unix域数据报套接字进行进程间通信。
containerd-shim是用作容器运行的载体,实现容器生命周期管理, 其API以抽象命名空间Unix域套接字方式暴露,该套接字可通过根网络名称空间访问。...为了提供自己的gRPC(实际上是ttrpc,一种裁剪版gRPC协议)API,containered-shim监听Unix域套接字。...它们在抽象Unix域套接字sun_path中嵌入了结尾的空字节,其可阻止常见的Unix工具(例如socat)与其连接。...containerd-shim使用标准的Unix域套接字功能来验证传入的连接是否具有与其相同的UID和EUID(通常为UID:0和EUID:0)。...containerd-shim所使用的抽象的Unix域套接字,是绑定在主机的网络命名空间上的。
Docker for Linux 中最为常见的同主机通讯方式是 Unix 域套接字。..., 方法是扫描一组众所周知的 Unix 域套接字。...Linux 是多进程操作系统,为了让多个系统中的多个进程能够进行高效的通讯,出现和很多方法,其中一种是域套接字(Unix domain socket),只能用于在同一计算机中的进程间通讯,但是其效率高于网络套接字...域套接字使用一个 .sock 文件进行通讯,常见的容器软件其对应域套接字如下: 运行时 域套接字 Docker /var/run/dockershim.sock containerd /run/containerd...Unux 域套接字是套接字和管道之间的混合物。 在 Linux 中,有很多进程,为了让多个进程能够进行通讯,出现和很多方法,其中一种是套接字(socket)。
预备知识 Socket 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个 socket(套接字),因此建立网络通信连接至少要一对端口号。...利用 nc 命令,我们可以方便地连接一个 UNIX 域套接字(socket)服务器,如: $ nc -U /tmp/echo.sock # -U — Use UNIX domain socket socket...域套接字或Windows命名管道的给定句柄上的连接。...接下来我们就来介绍一下,如何创建简单的 UNIX 域套接字服务器。...域套接字服务器: $ nc -U /tmp/echo.sock 命令执行后,控制台首先会输出 hello,当我们输入任何消息后,UNIX 域套接字服务器也会返回同样的消息: ➜ ~ nc -U /tmp
这时候Nodejs提供了libuv来作为抽象封装层,在Unix系统上,通过封装libev和libio调用linux的epoll 或 kqueue,在Windows 平台上的IOCP[3]进行封装,自此之后...Libuv的特点 •全功能的事件循环基于epoll、kqueue、IOCP、event ports•异步的TCP和UDP套接字•异步的DNS解析•异步的文件和文件系统操作•文件系统事件•ANSI转义代码控制的...TTY•PC包括套接字共享,使用Unix域套接字或有名管道(Windows)•子进程•线程池•信号处理•高分辨率时钟•线程和同步原语 Libuv入门实战之Hello world 笔者是MacOS的系统,.../configure make make check make install 3.安装完成后,查看一下自己本地 /usr/local/include/ 下是否有uv.h等头文件,如果存在即安装完成...一般而言,遵守 POSIX 规范的操作系统指的是 UNIX、Linux、Mac OS X 等: [3] Windows 平台上的内核事件通知相应的机制Input/Output Completion Port
4.JEP 380:Unix 域套接字通道 概述 将 Unix 域 ( AF_UNIX) 套接字支持添加到包中的套接字通道和服务器套接字通道API java.nio.channels。...扩展继承的通道机制以支持 Unix 域套接字通道和服务器套接字通道。 目标 Unix 域套接字用于同一主机上的进程间通信 (IPC)。...此 JEP 的目标是支持在主要 Unix 平台和 Windows 中通用的 Unix 域套接字的所有功能。...原因 对于本地、进程间通信,Unix 域套接字比 TCP/IP 环回连接更安全、更高效。 Unix 域套接字严格用于同一系统上的进程之间的通信。...Unix 域套接字比 TCP/IP 环回连接具有更快的设置时间和更高的数据吞吐量。 对于需要在同一系统上的容器之间进行通信的容器环境,Unix 域套接字可能是比 TCP/IP 套接字更好的解决方案。
领取专属 10元无门槛券
手把手带您无忧上云