我有使用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时,我想检查挂载路径是否在一段时间后仍被挂载,因为在对它进行某些处理之前,它可能已经被卸载。检查路径是否仍然挂载的最有效方法是什么?
另外,有没有办法在路径被卸载的情况下获得回调?
发布于 2015-12-07 20:55:46
我想说,最有效的方法是缓存stat()返回的st_dev和st_ino (尽管可能只缓存st_dev就足够了)。
如果卸载卷,装载点将恢复到父文件系统中最初装载卷的空子目录,并且stat()将为相同的文件路径返回不同的device+inode。
只要收到通知,就检查一下inotify(7)接口,注意IN_UNMOUNT事件。
https://stackoverflow.com/questions/34134029
复制相似问题