文件描述符 3u 的流是什麼?
我知道文件描述符 2u 的流是標準錯誤。但是,我不確定文件描述符 3u 的流是什麼,為什麼?最終,3u 在這裡代表什麼?
引用手冊:
FD 是文件的文件描述符編號
$$ … $$ FD 後跟這些字元之一,描述文件打開的模式:
$$ … $$ u用於讀寫訪問;
TYPE 是與文件關聯的節點的類型 - 例如,GDIR、GREG、VDIR、VREG 等。
或IPv4用於 IPv4 套接字;
NODE 是本地文件的節點號;
$$ … $$ 或 Internet 協議類型 - 例如,“TCP”;
名字是
$$ … $$網路文件的本地和遠端 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 個。