c - Accept4 中的声明 {sa_family=AF_UNIX} 和 [110->2] 意味着什么?

标签 c linux-kernel

我在我的 Android 中做了一个 strace,得到了以下行

accept4(8<UNIX:[246]>, {sa_family=AF_UNIX}, [110->2], 0) = 9<UNIX:[2512219]>

我不明白 {sa_family=AF_UNIX} 的作用(它应该是一个 sockaddr 指针,但它在路径和内存地址方面指向哪里?),我想知道 110 和 2 意味着什么为什么 110 指向 2 以及此操作到底返回什么。

(我真的很好奇这样创建的套接字的对等点,因为我在任何 proc/PID/fd 文件中都找不到 inode 2512219,所以我想知道是否有读/写套接字的进程现在已经死了,如果我能知道他的名字的话。)谢谢!

最佳答案

来自man accept4 :

int accept4(int sockfd, struct sockaddr *addr, socklen_t *addrlen, int flags);

accept4(8<UNIX:[246]>, {sa_family=AF_UNIX}, [110->2], 0) = 9<UNIX:[2512219]>
  • 8sockfd 值。来自 man:监听套接字,sockfd
  • 2468文件描述符的inode号
  • 指针addr指向的内存中存储的结构体struct sockaddr中的结构体成员.sa_family的值为 AF_UNIX
  • 来自 man:[addr] 填写通信层已知的对等套接字的地址
  • 110 输入值addrlen(socklen_t 整数存储在由addrlen 指针指向的内存中)。来自 man:调用者必须初始化它 [addrlen] 以包含 addr 指向的结构的大小(以字节为单位);
  • 函数返回后
  • 2 addrlen 的值。来自 man:将包含对等地址的实际大小
  • 0 标志标志。来自 man:如果 flags 为 0,则accept4() 与accept() 相同。
  • 9 返回文件描述符。来自 man:一个非负整数,它是接受套接字的文件描述符
  • 25122199 文件描述符的 inode 号

关于c - Accept4 中的声明 {sa_family=AF_UNIX} 和 [110->2] 意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55567443/

相关文章:

c - 在 C 循环中打印 char 的输入

结构成员的偏移量用作数组长度时的编译错误

ubuntu - 为什么使用 int80h 而不是 sysenter 来调用系统调用?

c - 获取猫 :/dev/mydevice1: Invalid argument as output when trying to communicate in driver

linux - 什么是指针的唯一标识 (UID) 编号?

c - 确定 Gameboy GB 仿真的中断例程何时结束

pthreads 程序的竞争条件会使操作系统或 X 完全崩溃吗?

检查命令行输入是否为数字

linux - 向Linux内核添加头文件

c - 判断是ipv4还是ipv6数据结构