user516609 Asked: 2022-03-03 11:17:36 +0800 CST2022-03-03 11:17:36 +0800 CST 2022-03-03 11:17:36 +0800 CST 文件描述符 3u 的流是什么? 772 我知道文件描述符 2u 的流是标准错误。但是,我不确定文件描述符 3u 的流是什么,为什么?最终,3u 在这里代表什么? linux terminal 1 个回答 Voted Best Answer Stéphane Chazelas 2022-03-03T12:13:34+08:002022-03-03T12:13:34+08:00 引用手册: FD 是文件的文件描述符编号 [...] FD 后跟以下字符之一,描述文件打开的模式: [...] u用于读取和写入访问; TYPE 是与文件关联的节点的类型 - 例如,GDIR、GREG、VDIR、VREG 等。 或IPv4用于 IPv4 套接字; NODE 是本地文件的节点号;[...] 或 Internet 协议类型 - 例如,“TCP”; NAME 是 [...] 网络文件的本地和远程 Internet 地址;本地主机名或 IP 号后跟冒号 (':')、端口、->和两部分远程地址;IP 地址可能以数字或名称的形式报告,具体取决于 +|-M、-n 和 -P 选项;以冒号分隔的 IPv6 编号括在方括号中;IPv4 INADDR_ANY 和 IPv6 IN6_IS_ADDR_UNSPECIFIED 地址,零端口号用星号 ('*') 表示;UDP 目标地址后面可以跟上一个数据包发送到目标后经过的时间量;TCP、UDP 和 UDPLITE 远程地址后面可以跟括号中的 TCP/TPI 信息 - 状态(例如 (ESTABLISHED), (Unbound))、队列大小和窗口大小(不是所有方言)——以类似于 netstat(1) 报告的方式;有关状态、队列大小和窗口大小的更多信息,请参阅 -T 选项说明或 OUTPUT FOR OTHER PROGRAMS 中 TCP/TPI 字段的说明; 因此,这里lsof告诉您当前运行的进程 3932 的文件描述符 3nc处于读+写模式(u尽管这与侦听套接字几乎没有关系),并且指向绑定到 INADDR_ANY 和端口 1337 的侦听 IPv4 TCP 套接字。 这是一个套接字,nc期望传入的 TCP 连接登陆。 启动时nc,fds 0、1 和 2 已经打开,因为按照惯例,它们是为标准输入、输出或错误保留的,因此当nc调用socket()系统调用来创建新套接字时,系统会返回该进程的第一个空闲文件描述符: 3。 然后nc通常会accept()在该套接字上执行一个操作,当传入连接进入时,accept()将返回另一个文件描述符,用于实际携带传输数据的已接受套接字。再说一次,这将是第一个免费的,很可能是 4 个。
引用手册:
因此,这里
lsof
告诉您当前运行的进程 3932 的文件描述符 3nc
处于读+写模式(u
尽管这与侦听套接字几乎没有关系),并且指向绑定到 INADDR_ANY 和端口 1337 的侦听 IPv4 TCP 套接字。这是一个套接字,
nc
期望传入的 TCP 连接登陆。启动时
nc
,fds 0、1 和 2 已经打开,因为按照惯例,它们是为标准输入、输出或错误保留的,因此当nc
调用socket()
系统调用来创建新套接字时,系统会返回该进程的第一个空闲文件描述符: 3。然后
nc
通常会accept()
在该套接字上执行一个操作,当传入连接进入时,accept()
将返回另一个文件描述符,用于实际携带传输数据的已接受套接字。再说一次,这将是第一个免费的,很可能是 4 个。