- stat
- lstat
- fstatat
- fstat
不同Linux平台還可以分64bit跟32bit版本(這可能是為了讓Linux Kernel可以在各種環境運作的關係,是頗有道理)
其實會發現fstatat只要傳入某些參數,其實幾乎完全可以取代stat跟lstat。
從Kernel Code來看,其實前3個函式實作上都只是簡單的前置處理,接著傳給一個 vfs_fstatat 函式作真正的處理。
不只stat,如getxattr,setxattr,listxattr,removexattr等都有這種狀況。
Windows的這方面就簡潔許多,Widnows有關檔案管理操作一切都從 CreateFile 開始,它會傳回一個Handle,之後不論任何有關該檔案的操作,皆使用這個Handle,並從這個Handle檢查權限,最後透過 CloseHandle 關閉Handle。
結果導致光虛擬化*stat跟*xattr就變成這樣。(如果在Windows下,其實*stat跟*xattr這類函式都不需要特別虛擬化,因為都是用Handle在操作,只要虛擬化 CreateFile 即可)
No comments:
Post a Comment