Timestamps
為什麼我的命名管道不斷被修改?
我有一個從 C 程序創建的命名 fifo,如下所示:
res = mkfifo("/home/myfolder/myfifo", 0666);
之後只有讀取和寫入。
現在,從這個答案:命名管道是否更改文件系統我得出結論,系統實際上不應該實際寫入文件系統上的實際文件,並且所有內容都在 RAM 中處理。
每當我重新啟動程序時,“mkfifo”行都會返回“文件已存在”錯誤,這沒關係。
困擾我的是,當我“ls”文件時,“最後修改的日期時間”有時會發生變化。如果系統從未真正寫入文件,它不應該保持不變嗎?
通過管道的數據不會寫入文件系統或從文件系統讀取數據。創建命名管道時,會分配一個 inode,以便它可以從您創建它的目錄連結到;所以這是“修改文件系統”的一種形式。
訪問命名管道將更新 inode 的訪問時間,寫入命名管道將更新 inode 的修改時間,因此文件系統也以這種間接方式被修改。這並不意味著數據被寫入文件系統;這就是 Linux 處理對命名管道的寫入的方式。