# File lib/vendor/darwin/lib/rb-fsevent/fsevent.rb, line 36
  def run
    @pipe    = open_pipe
    @running = true

    # please note the use of IO::select() here, as it is used specifically to
    # preserve correct signal handling behavior in ruby 1.8.
    while @running && IO::select([@pipe], nil, nil, nil)
      if line = @pipe.readline
        modified_dir_paths = line.split(':').select { |dir| dir != "\n" }
        callback.call(modified_dir_paths)
      end
    end
  rescue Interrupt, IOError
  ensure
    stop
  end