
我知道文件描述符2u的流是stderr。但是,我不确定文件描述符3u的流是什么,为什么?最终,3u代表什么?
发布于 2022-03-02 20:13:34
引用手册:
FD是文件... FD的文件描述符号,后面跟着其中一个字符,描述文件打开的模式:... u,用于读写访问;类型是与文件关联的节点类型--例如,GDIR、格雷格、VDIR、VREG等,或者是IPv4套接字的IPv4;节点是本地文件的节点编号;...或因特网协议类型--例如,TCP‘;名称是... --网络文件的本地和远程Internet地址;本地主机名或IP号后面跟着冒号(':')、端口、
->和两个部分的远程地址;IP地址可以报告为数字或名称,具体取决于+ time、-n和-P选项;以冒号分隔的IPv6数字括在方括号中;IPv4 INADDR_ANY和IPv6 IN6_IS_ADDR_UNSPECIFIED地址,零端口号由星号(‘*’)表示;UDP目的地地址可能后面跟着上次数据包发送到目的地的时间;TCP、UDP和UDPLITE远程地址后面可以是括号中的TCP/TPI信息--状态(例如,(ESTABLISHED)、(Unbound))、队列大小和窗口大小(并非所有方言)--与netstat(1)报告的方式类似;有关状态、队列大小和窗口大小的更多信息,请参见输出中的-T选项说明或TCP/TPI字段的说明;
因此,这里lsof告诉您,当前正在运行nc的进程3932的文件描述符3处于read+write模式(u;尽管这与侦听套接字几乎不相关),并且指向绑定到INADDR_ANY和端口1337的侦听IPv4 TCP套接字。
这是一个套接字,nc期望传入的TCP连接能够登录到该套接字上。
当nc启动时,fds 0、1和2已经被打开,因为按照约定,它们是为标准输入、输出或错误保留的,因此当nc调用socket()系统调用来创建新的套接字时,系统返回该进程的第一个空闲文件描述符: 3。
然后,nc通常会在该套接字上执行一个accept(),当传入连接进入时,accept()将返回另一个文件描述符,用于接受的套接字,该文件描述符将实际携带所传输的数据。再次,这将是第一个免费的,所以很可能是4。
https://unix.stackexchange.com/questions/692718
复制相似问题