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

时间:2019-04-08 06:32:51

标签: c linux-kernel

我在android中做了一个跟踪,得到了以下一行

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文件中找到索引节点2512219,所以我想知道是否已对套接字进行读/写操作现在已经死了,如果我能知道他的名字。)谢谢!

1 个答案:

答案 0 :(得分:1)

来自man accept4

  

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

accept4(8<UNIX:[246]>, {sa_family=AF_UNIX}, [110->2], 0) = 9<UNIX:[2512219]>
  • 8sockfd的值。来自人:the listening socket, sockfd
  • 2468文件描述符的索引节点编号
  • 指针.sa_family所指向的存储器中存储的结构struct sockaddr中的结构成员addr的值为AF_UNIX
  • 来自人:[addr] It is filled in with the address of the peer socket, as known to the communications layer
  • 110输入值addrlensocklen_t指针指向的存储器中存储的addrlen整数)。来自人:the caller must initialize it [addrlen] to contain the size (in bytes) of the structure pointed to by addr;
  • 函数返回后,
  • 2的值为addrlen。来自人:will contain the actual size of the peer address
  • 0标志flags。来自人:If flags is 0, then accept4() is the same as accept().
  • 9返回了文件描述符。来自人:a nonnegative integer that is a file descriptor for the accepted socket
  • 2512219个文件描述符的9索引节点编号