Questions tagged «unix-sockets»

2
为什么套接字路径长度限制为一百个字符?
在Unix系统上,路径名通常几乎没有长度限制(在Linux上是4096个字符)...除了套接字文件路径最多只能有100个字符(在Linux上为 107个字符)外)之外。 第一个问题: 为什么限制这么低? 我检查了,它似乎有可能通过改变当前的工作目录,并在不同的目录中创建所有使用相同的路径几个套接字文件来解决此限制./myfile.sock:客户端应用程序似乎正确地连接到预期的服务器进程偶数虽然lsof显示所有他们中的一个在同一套接字文件路径上侦听。 这种解决方法可靠吗?还是我很幸运? 此行为是特定于Linux的,还是该解决方法也适用于其他Unix?

1
在部分读取时,unix流辅助数据会发生什么?
因此,我已经阅读了很多有关unix流辅助数据的信息,但是所有文档中缺少的一件事是,如果部分读取,该怎么办? 假设我正在24字节缓冲区中接收以下消息 msg1 [20 byes] (no ancillary data) msg2 [7 bytes] (2 file descriptors) msg3 [7 bytes] (1 file descriptor) msg4 [10 bytes] (no ancillary data) msg5 [7 bytes] (5 file descriptors) 第一次调用recvmsg时,我会收到所有msg1(以及部分msg2?操作系统会这样做吗?)如果我获得了msg2的一部分,我是否会立即获取辅助数据,并需要保存以备下次读取当我知道消息实际上告诉我如何处理数据时?如果我从msg1释放20个字节,然后再次调用recvmsg,它将同时提供msg3和msg4吗?来自msg3和msg4的辅助数据是否在控制消息结构中串联在一起? 虽然我可以编写测试程序来通过实验找到答案,但我正在寻找有关辅助数据在流上下文中的行为的文档。我找不到任何官方材料,这似乎很奇怪。 我将在这里添加我的实验结果,这是我从该测试程序获得的: https://github.com/nrdvana/daemonproxy/blob/master/src/ancillary_test.c Linux 3.2.59、3.17.6 看起来,只要在调用recvmsg的过程中不需要传递先前的辅助有效负载,Linux就会将部分辅助消息附加到其他消息的末尾。一旦传递了一条消息的辅助数据,它将返回短读,而不是开始下一条辅助数据消息。因此,在上面的示例中,我得到的读数是: recv1: [24 bytes] (msg1 + partial msg2 with msg2's 2 file …

2
Linux是否会自动清理抽象域套接字?
在StackOverflow上有一个很好的答案,那就是为守护程序(由Eduardo Fleury合成)提供更好的锁定,而该锁定不依赖于守护程序的通用PID文件锁定机制。关于为什么PID锁定文件有时会引起问题,有很多很好的评论,因此在这里我不会对其进行哈希处理。 简而言之,该解决方案依赖于Linux抽象名称空间域套接字,该套接字为您按名称跟踪套接字,而不是依赖文件,该文件在守护进程被SIGKILL处理后仍会存在。该示例表明,一旦进程终止,Linux似乎可以释放套接字。 但是我找不到在Linux中的权威文档,该文档没有说明当绑定进程进行SIGKILL操作时Linux对抽象套接字的确切作用。有人知道吗? 换句话说,确切地说什么时候抽象套接字可以释放以供再次使用? 我不想用抽象套接字替换PID文件机制,除非它能最终解决问题。

2
如何从Unix域套接字被动捕获(AF_UNIX套接字监视)?
可以使用tcpdump/ 捕获TCP / IP和UDP,dumpcap并生成一个pcap / pcapng文件,该文件可以提供给Wireshark进行进一步分析。命名的Unix域套接字是否存在类似的工具?(不过,适用于抽象套接字的通用解决方案也不错。) strace仅凭现状是不够的,要过滤Unix域套接字I / O并不容易。一个使用代理socat或类似的也不适宜为目标,是对现有打开的程序被动分析。 如何获得可在Wireshark中用于分析的数据包捕获?示例协议应用程序是X11(Xorg,我当前的应用程序)和cURL / PHP(HTTP)。我CONFIG_UNIX_DIAG在Linux内核中看到了一个选项,这有什么用吗?


1
/ proc / net / unix的内容是什么意思?
在我的Android设备上,有一个名为/proc/net/unixwho's content的文件 与任何标准 linux发行版(显示unix域套接字)的内容都不匹配。前几行: Num RefCount Protocol Flags Type St Inode Path 00000000: 00000002 00000000 00000000 0002 01 5287581 /data/misc/wifi/sockets/wpa_ctrl_789-3189 00000000: 00000003 00000000 00000000 0001 03 6402 /dev/socket/qmux_radio/qmux_client_socket 297 00000000: 00000002 00000000 00010000 0001 01 7180 /dev/.secure_storage/ssd_socket 00000000: 00000002 00000000 00010000 0001 01 6424 /dev/socket/cnd 00000000: 00000002 00000000 00010000 0001 …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.