【发布时间】:2019-09-18 15:50:21
【问题描述】:
目前,我可以使用 poll 和 revents POLLERR | POLLPRI 确定 /proc/mounts 何时更改。我现在希望能够比较这个伪文件在更改前后的大小,以确定是附加了新的挂载,还是移除了旧的挂载。
我尝试使用ioctl(fd, FIONREAD, &size),但它似乎报告了无意义的大小。我不希望必须缓冲整个输出,因为我必须分配一个不可移植的相当大的缓冲区。
我正在编写一个 C/C++ 应用程序,它可以监听和响应挂载点的变化。更具体地说,当 USB 大容量存储设备连接到系统时,我希望我的程序能够:
- 确定已安装新分区。
- 检查该分区的内容。
- 如果分区包含具有特定名称的文件,请对该文件执行某些操作。
我认为我目前的方法不合适。
【问题讨论】:
-
我认为您最安全的做法是在每次轮询唤醒时重新扫描所有文件系统。可能是,
/dev/sdd很快被卸载、断开连接,附加了一个新驱动器,该驱动器也分配给了/dev/sdd,并且它被安装在同一目录中,直到你的进程没有被唤醒毕竟这一切都发生了。那么/proc/mounts可能看起来完全一样,但可能新安装的设备确实包含您的魔法文件。
标签: linux