我在我的 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]>
8
是sockfd
值。来自 man:监听套接字,sockfd
246
是8
文件描述符的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:一个非负整数,它是接受套接字的文件描述符
2512219
第9
文件描述符的 inode 号
关于c - Accept4 中的声明 {sa_family=AF_UNIX} 和 [110->2] 意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55567443/