Gambas文档
编译和安装
错误消息
代码片段
待办事项
废弃的组件
教程
开发环境文档
开发者文档
名词解释
如何操作
说明
维基手册
维基搜索
维基许可协议
文档
应用程序仓库
语言概览
语言索引
主题
组件
gb
gb.args
gb.cairo
gb.chart
gb.clipper
gb.complex
gb.compress
gb.crypt
gb.data
gb.db
gb.db.form
gb.db.mysql
gb.db.odbc
gb.db.postgresql
gb.db.sqlite2
gb.db.sqlite3
gb.dbus
gb.dbus.trayicon
gb.debug
gb.desktop
gb.desktop.x11
gb.eval
gb.eval.highlight
gb.form
gb.form.dialog
gb.form.editor
gb.form.htmlview
gb.form.mdi
gb.form.print
gb.form.terminal
gb.gmp
gb.gsl
gb.gtk
gb.gtk3
gb.gtk3.opengl
gb.gtk3.webview
gb.gui
gb.gui.qt
gb.gui.qt.ext
gb.gui.trayicon
gb.gui.webview
gb.hash
gb.highlight
gb.image
gb.image.effect
gb.image.io
gb.inotify
Watch
gb.logging
gb.map
gb.media
gb.media.form
gb.mime
gb.mongodb
gb.mysql
gb.ncurses
gb.net
gb.net.curl
gb.net.pop3
gb.net.smtp
gb.opengl
gb.opengl.glsl
gb.opengl.glu
gb.opengl.sge
gb.openssl
gb.option
gb.pcre
gb.pdf
gb.poppler
gb.qt4
gb.qt4.ext
gb.qt4.opengl
gb.qt4.webkit
gb.qt4.webview
gb.qt5
gb.qt5.ext
gb.qt5.opengl
gb.qt5.webview
gb.qt6
gb.qt6.ext
gb.qt6.opengl
gb.qt6.webview
gb.report
gb.report2
gb.sdl
gb.sdl2
gb.sdl2.audio
gb.settings
gb.signal
gb.term
gb.test
gb.util
gb.util.web
gb.v4l
gb.vb
gb.web
gb.web.feed
gb.web.form
gb.web.gui
gb.xml
gb.xml.html
gb.xml.rpc
gb.xml.xslt
最近的修改

Watch (gb.inotify)

这个类表示一个被监视的文件系统对象。

Inotify事件是异步报告的,内核不能保证及时交付事件。例如,如果在您监视的目录中创建了一个文件,然后立即将其删除,则可能会在文件已删除后收到Create事件。如果你未留心尝试读取由 Watch.Name 命名的文件,你的程序将崩溃,并显示“没有这样的文件或目录”。

你应该阅读inotify手册页的“限制和注意事项”部分(`man7 inotify`)。这个手册页是一个很好的补充信息来源。

监视目录是 递归的, 即你将只接收来自目录本身及其直接条目的事件。如果你想更深入,你必须手动添加递归监视。

该类是可创建

常数
All  
Close  
Create  
Delete  
Move  
MoveFrom  
MoveTo  
Open  
Read  
Stat  
Write  

静态属性
Cookie  
IsDir  
Name  
Unmount  

属性
Events  
IsPaused  
Path  
Tag  

方法
Pause  
Resume  

事件
Close  
Create  
Delete  
Move  
MoveFrom  
MoveTo  
Open  
Read  
Stat  
Write  

静态属性用于在事件管理期间存储来自内核的数据。仅在事件处理程序中使用它们。

Example

Use "gb.inotify"
'The above line is required for Gambas Script only, in full Gambas IDE, see Project Components.

Private $hWatch As Watch

Public Sub Main()
  Dim sFile1 As String = Temp$(), sFile2 As String = Temp$()

  $hWatch = New Watch(File.Dir(Temp$()), True) As "Watcher"

  ' This line is redundant: a Watch object will automatically subscribe to events for which an event handler exists!
  '$hWatch.Events[Watch.Create Or Watch.Delete] = True
  Print "I'm watching... "

  ' Create two files
  File.Save(sFile1, "abc")
  File.Save(sFile2, "def")
  Wait 0.1 ' enter event loop to see events

  ' Delete one file
  Kill sFile2
  Wait 0.1

  ' Delete the second file. The Delete event was unsubscribed at this point (see Watcher_Delete), so no event is raised for this.
  Kill sFile1
  Wait 1

  Quit
End

Public Sub Watcher_Create()
  Print "Create: " & Watch.Name
End

Public Sub Watcher_Delete()
  Print "Delete: " & Watch.Name
  ' Unsubscribe from deletions after the first one.
  Last.Events[Watch.Delete] = False
End
I'm watching...
Create: 1.tmp
Create: 2.tmp
Delete: 2.tmp