[英]C++ Check if mount path is still mounted
我有在以下定義的結構中使用getmntent
獲得的安裝路徑(特別是安裝前綴)的詳細信息:
struct mntent {
char *mnt_fsname; /* name of mounted file system */
char *mnt_dir; /* file system path prefix */
char *mnt_type; /* mount type (see mntent.h) */
char *mnt_opts; /* mount options (see mntent.h) */
int mnt_freq; /* dump frequency in days */
int mnt_passno; /* pass number on parallel fsck */
};
我想使用mnt_dir
檢查一段時間后是否仍然掛載了掛載路徑,因為在對其進行某些處理之前,它可能已經被掛載了。 檢查路徑是否仍然安裝的最有效方法是什么?
還有在路徑卸載的情況下是否有獲取回調的方法?
我想說,最有效的方法是緩存stat()
返回的st_dev
和st_ino
(盡管僅緩存st_dev
應該足夠了)。
如果卸載該卷,則安裝點將還原到該卷最初安裝在其父文件系統中的空子目錄,並且stat()
將針對同一文件路徑返回不同的device + inode。
據通知,在inotify(7)
接口周圍戳一下,注意IN_UNMOUNT
事件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.