- 是否有必要有一个 while( True ) 循环
您需要 a ,但可以通过调用该方法while-loop
隐式设置它:notifier.loop
wm = pyinotify.WatchManager()
mask = pyinotify.IN_CREATE
notifier = pyinotify.Notifier(wm, MyProcessEvent(path))
wdd = wm.add_watch(path, mask, rec=True, auto_add=True)
notifier.loop()
如果您希望while-loop
自己设置,您可以从以下源代码notifier.loop
开始:
while 1:
try:
notifier.process_events()
# check_events is blocking
if notifier.check_events():
notifier.read_events()
except KeyboardInterrupt:
# Stop monitoring if sigint is caught (Control-C).
break
notifier.stop()
要删除特定文件或目录的监视,请调用wm.rm_watch
.
如果在 inotify 实例“打开”时文件已经存在,会发生什么?
wm.add_watch
在调用之前不生成任何事件。
如果在我的事件处理器函数中创建文件会发生什么?
事件在大小为的缓冲区中排队
/proc/sys/fs/inotify/max_queued_events
。例如,在我的系统上,该号码是
% cat /proc/sys/fs/inotify/max_queued_events
16384
如果文件系统在您处理先前的事件时生成了足够的事件来填满缓冲区,那么您会得到一个IN_Q_OVERFLOW
事件。
请参阅blucz 答案中的评论。