首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > Ruby Rails >

ruby监控索引变化

2012-09-14 
ruby监控目录变化ruby监控目录变化安转gem插件require rubygemsrequire ffimodule Inotifyextend FFI:

ruby监控目录变化
ruby监控目录变化

安转gem插件

require 'rubygems'require 'ffi'module Inotify  extend FFI::Library  ffi_lib FFI::Library::LIBC  class Event < FFI::Struct    layout \      :wd, :int,      :mask, :uint,      :cookie, :uint,      :len, :uint  end  attach_function :init, :inotify_init, [ ], :int  attach_function :add_watch, :inotify_add_watch, [ :int, :string, :uint ], :int  attach_function :rm_watch, :inotify_rm_watch, [ :int, :uint ], :int  attach_function :read, [ :int, :buffer_out, :uint ], :int  IN_ACCESS=0x00000001  IN_MODIFY=0x00000002  IN_ATTRIB=0x00000004  IN_CLOSE_WRITE=0x00000008  IN_CLOSE_NOWRITE=0x00000010  IN_CLOSE=(IN_CLOSE_WRITE | IN_CLOSE_NOWRITE)  IN_OPEN=0x00000020  IN_MOVED_FROM=0x00000040  IN_MOVED_TO=0x00000080  IN_MOVE= (IN_MOVED_FROM | IN_MOVED_TO)  IN_CREATE=0x00000100  IN_DELETE=0x00000200  IN_DELETE_SELF=0x00000400  IN_MOVE_SELF=0x00000800  # Events sent by the kernel.  IN_UNMOUNT=0x00002000  IN_Q_OVERFLOW=0x00004000  IN_IGNORED=0x00008000  IN_ONLYDIR=0x01000000  IN_DONT_FOLLOW=0x02000000  IN_MASK_ADD=0x20000000  IN_ISDIR=0x40000000  IN_ONESHOT=0x80000000  IN_ALL_EVENTS=(IN_ACCESS | IN_MODIFY | IN_ATTRIB | IN_CLOSE_WRITE \      | IN_CLOSE_NOWRITE | IN_OPEN | IN_MOVED_FROM \      | IN_MOVED_TO | IN_CREATE | IN_DELETE \      | IN_DELETE_SELF | IN_MOVE_SELF)endif $0 == __FILE__   #$0是用于启动程序的文件名  fd = Inotify.init  puts "fd=#{fd}"  wd = Inotify.add_watch(fd, "/home/jimmygan/bnet/", Inotify::IN_ALL_EVENTS)  fp = FFI::IO.for_fd(fd)  puts "wfp=#{fp}"  while true    buf = FFI::Buffer.alloc_out(Inotify::Event.size + 4096, 1, false)    ev = Inotify::Event.new buf    ready = IO.select([ fp ], nil, nil, nil)    n = Inotify.read(fd, buf, buf.total)    puts "Read #{n} bytes from inotify fd"    puts "event.wd=#{ev[:wd]} mask=#{ev[:mask]} len=#{ev[:len]} name=#{ev[:len] > 0 ? buf.get_string(16) : 'unknown'}"  endend

热点排行