Files

ls -l 命令中文件類型 c 的含義

  • April 8, 2022

我想知道 ls 命令中的 c 類型是什麼。

我在 /dev/stdin 跟踪符號連結並以 /dev/pts/0 結束

$ ls -l /dev/pts/0
crw--w---- 1 blue tty 136, 0 Apr  8 21:50 /dev/pts/0

我可以看到模式輸出中的第一個符號是c. 現在我試圖找出這意味著什麼。

我可以找到一些資訊,但 c 沒有列出,其中一些似乎也有點錯誤。至少在我的盒子上,符號連結有一個小寫的 l,而不是大寫的 L。

d      if the entry is a directory;
a      if the entry is an append-only file;
D      if the entry is a Unix device;
L      if the entry is a symbolic link;
P      if the entry is a named pipe;
S      if the entry is a socket;
-      if the entry is a plain file.

來源: http: //manpages.ubuntu.com/manpages/jammy/en/man1/ls.1plan9.html

我可以讀到man pts這些是偽終端主從對。

ptmx, pts - 偽終端主機和從機

當程序打開 /dev/ptmx 時,它會獲取偽終端主機的文件描述符,並在 /dev/pts 目錄中創建偽終端從設備。通過打開 /dev/ptmx 獲得的每個文件描述符都是一個獨立的偽終端主機,具有自己的關聯從機,可以通過將文件描述符傳遞給 ptsname(3) 來找到其路徑。

那麼c代表什麼?我認為這意味著這是一個pseudoterminal slave device.

編輯:

在閱讀和思考更多之後,我猜是c因為它本質上是一個控制台

“c”表示該設備是“字元特殊設備”。如果您查看,/dev您還會看到“b”表示“塊特殊設備”,例如所有磁碟。參見維基百科

設備文件允許直接訪問設備驅動程序。從歷史上看,UNIX 會同時為塊結構設備(如磁碟)提供字元設備和塊設備。“c” 設備允許直接訪問設備而無需通過系統緩衝區。這個名字有點誤導,“raw”會更好,但歷史決定了“c”。對於終端,這允許一次輸出或輸入一個或多個字元。對於磁碟,雖然它不允許字節級訪問,但呼叫者必須確保所有塊對齊和定址都由呼叫者完成。“b”設備可能更好地稱為“緩衝”設備。I/O 對系統的緩衝區進行,並在系統決定的某個點移動到磁碟。

引用自:https://unix.stackexchange.com/questions/698528