-2
我正在研究需要跟蹤文件(inode)路徑的Linux內核編程。如何判斷文件是否是Linux內核編程中的「..」文件?
我知道一些函數,如S_ISDIR,S_ISLNK來判斷文件是目錄還是軟鏈接。但我不知道如何判斷文件(inode)是否爲「..」文件,即文件指向父目錄?
我正在研究需要跟蹤文件(inode)路徑的Linux內核編程。如何判斷文件是否是Linux內核編程中的「..」文件?
我知道一些函數,如S_ISDIR,S_ISLNK來判斷文件是目錄還是軟鏈接。但我不知道如何判斷文件(inode)是否爲「..」文件,即文件指向父目錄?
AFAIK沒有名稱爲「..」的inode。當你訪問諸如/ etc/passwd的文件時,有一個稱爲路徑名稱查找的過程,它將每個'/','etc'和'passwd'轉換爲inode。遇到''。'或'/'或'..'有特殊處理。對於'。'和'/',這是一種無操作,並繼續使用相同的inode。對於'..',它會返回獲取它來自的父節點。這在第12章虛擬文件系統Understanding the Linux Kernel中有非常清楚的解釋。我強烈建議通過它。另請參閱http://www.mjmwired.net/kernel/Documentation/filesystems/path-lookup.txt
具體而言,我正在編寫一個安全模型,如果要在某些情況下遵循符號鏈接或「..」,將阻止該操作。我可以告訴它是否想用S_ISLNK(inode-> i_mode)訪問slink,但是如何判斷它是否要訪問「..」? 無論如何感謝您的回答,我是新來的,您的參考幫助了我很多。 – ming
然後我想你將不得不更新這部分路徑名查找: http://lxr.free-electrons.com/source/fs/namei.c#L1745 請注意,這是VFS代碼,並且會影響所有文件系統。 – spa