[#8566] Visions for 2001/1.7.x development? — Robert Feldt <feldt@...>

Hi matz and other Ruby developers,

18 messages 2001/01/03
[#8645] Re: Visions for 2001/1.7.x development? — matz@... (Yukihiro Matsumoto) 2001/01/04

Hi,

[#8580] bug?? — jmichel@... (Jean Michel)

I don't understand the following behaviour:

19 messages 2001/01/03

[#8633] Interesting Language performance comparisons - Ruby, OCAML etc — "g forever" <g24ever@...>

13 messages 2001/01/04

[#8774] No :<, :>, etc. methods for Array — "Brian F. Feldman" <green@...>

So, why not include Comparable in Array by default? It shouldn't have any

28 messages 2001/01/07
[#8779] Re: No :<, :>, etc. methods for Array — matz@... (Yukihiro Matsumoto) 2001/01/07

Hi,

[#8780] Re: No :<, :>, etc. methods for Array — "Brian F. Feldman" <green@...> 2001/01/07

matz@zetabits.com (Yukihiro Matsumoto) wrote:

[#8781] Re: No :<, :>, etc. methods for Array — gotoken@... (GOTO Kentaro) 2001/01/07

In message "[ruby-talk:8780] Re: No :<, :>, etc. methods for Array"

[#8782] Re: No :<, :>, etc. methods for Array — "Brian F. Feldman" <green@...> 2001/01/07

gotoken@math.sci.hokudai.ac.jp (GOTO Kentaro) wrote:

[#8829] Sandbox (again) — wys@... (Clemens Wyss)

Hi,

20 messages 2001/01/08
[#8864] Re: Sandbox (again) — Clemens Hintze <c.hintze@...> 2001/01/08

On 8 Jan, Clemens Wyss wrote:

[#8931] String confusion — Anders Bengtsson <ndrsbngtssn@...>

Hello everyone,

21 messages 2001/01/09
[#8937] Re: String confusion — matz@... (Yukihiro Matsumoto) 2001/01/09

Hi,

[#8953] Please remove account from files — "Thomas Daniels" <westernporter@...>

Please take my e-mail address from your files and "CANCEL" my =

14 messages 2001/01/09
[#8983] Re: Please remove account from files — John Rubinubi <rubinubi@...> 2001/01/10

On Wed, 10 Jan 2001, Thomas Daniels wrote:

[#9020] time to divide -talk? (was: Please remove account from files) — Yasushi Shoji <yashi@...> 2001/01/10

At Wed, 10 Jan 2001 14:23:30 +0900,

[#9047] Re: time to divide -talk? (was: Please remov e account from files) — Aleksi Niemel<aleksi.niemela@...>

Yasushi Shoji:

27 messages 2001/01/10
[#9049] Re: time to divide -talk? — Yasushi Shoji <yashi@...> 2001/01/10

At Thu, 11 Jan 2001 00:20:45 +0900,

[#9153] what about this begin? — Anders Strandl Elkj誡 <ase@...> 2001/01/11

[#9195] Re: Redefining singleton methods — ts <decoux@...>

>>>>> "H" == Horst Duch=EAne?= <iso-8859-1> writes:

10 messages 2001/01/12

[#9242] polymorphism — Maurice Szmurlo <maurice@...>

hello

73 messages 2001/01/13

[#9279] Can ruby replace php? — Jim Freeze <jim@...>

When I read that ruby could be used to replace PHP I got really

15 messages 2001/01/14

[#9411] The Ruby Way — "Conrad Schneiker" <schneiker@...>

As a member of the "Big 8" newsgroups, "The Ruby Way" (of posting) is to

15 messages 2001/01/17

[#9462] Re: reading an entire file as a string — ts <decoux@...>

>>>>> "R" == Raja S <raja@cs.indiana.edu> writes:

35 messages 2001/01/17
[#9465] Re: reading an entire file as a string — Dave Thomas <Dave@...> 2001/01/17

raja@cs.indiana.edu (Raja S.) writes:

[#9521] Larry Wall INterview — ianm74@...

Larry was interviewed at the Perl/Ruby conference in Koyoto:

20 messages 2001/01/18
[#10583] Re: Larry Wall INterview — "greg strockbine" <gstrock@...> 2001/02/08

Larry Wall's interview is how I found out

[#9610] Re: 101 Misconceptions About Dynamic Languages — "Ben Tilly" <ben_tilly@...>

"Christian" <christians@syd.microforte.com.au> wrote:

13 messages 2001/01/20

[#9761] Re: 101 Misconceptions About Dynamic Languages — ts <decoux@...>

>>>>> "C" == Christoph Rippel <crippel@primenet.com> writes:

16 messages 2001/01/23

[#9792] Ruby 162 installer available — Dave Thomas <Dave@...>

15 messages 2001/01/24

[#9958] Re: Vim syntax files again. — "Conrad Schneiker" <schneik@...>

Hugh Sasse wrote:

14 messages 2001/01/26
[#10065] Re: Vim syntax files again. — Hugh Sasse Staff Elec Eng <hgs@...> 2001/01/29

On Sat, 27 Jan 2001, Conrad Schneiker wrote:

[#9975] line continuation — "David Ruby" <ruby_david@...>

can a ruby statement break into multiple lines?

18 messages 2001/01/27
[#9976] Re: line continuation — Michael Neumann <neumann@...> 2001/01/27

On Sat, 27 Jan 2001, David Ruby wrote:

[#9988] Re: line continuation — harryo@... (Harry Ohlsen) 2001/01/28

>A statement break into mutliple lines if it is not complete,

[ruby-talk:9669] Re: Non-blocking I/O?

From: schuerig@... (Michael Schuerig)
Date: 2001-01-21 18:10:02 UTC
List: ruby-talk #9669
Mathieu Bouchard <matju@cam.org> wrote:

> > I'm trying to watch some (log)files for changes. For this purpose,
> > non-blocking I/O and the select function look promising, unfortunately,
> > I don't get them to work.
> > Here's a snippet of my effort
> 
> Do not use Non-blocking I/O. This is not a concept that is useful here.
> NBIO is to be used on pure streams, like pipes, sockets, ... many OS don't
> support NBIO on regular files (e.g. afaik Linux). Anyway this would only
> allow
> you to send several requests to the kernel at the same time.

Apparently it works on Linux. Whatever "it" is exactly. That is, I can't
claim that I'm sure it actually does non-blocking I/O. Here's the script
as it has evolved, so far.


#! /usr/bin/ruby

require 'fcntl'
require 'singleton'


trap("SIGHUP") {
  Logwatch.instance.reload()
}


module Daemon
  def Daemon.init
    puts "Daemon.init"
    
    pid = fork()
    puts "PID #{pid}"
    
    if (pid != nil)
      puts "Parent exit"
      exit(0)
    end
    
    Process.setsid()
    Dir.chdir("/")
    File.umask(0)
  end
end


class Logwatch
  include Daemon
  include Singleton
  
  SLEEP_TIME = 0.2
  @watchfiles = []
  
  def setupWatchfiles()
    # needs to read file paths from config file
    testfile = open("/tmp/messages", "r")
    testfile.fcntl(Fcntl::F_SETFL, Fcntl::O_NONBLOCK)
    testfile.seek(0, IO::SEEK_END)
    @@watchfiles = [testfile]
  end
  
  def watch()
    while (true)
      inputAvail = select(@@watchfiles)[0]
      inputSucc = false
      
      inputAvail.each() do |f|
        begin
          s = f.sysread(100);
          inputSucc = true
          puts s
        rescue EOFError
        end
      end
      
      sleep(SLEEP_TIME) unless inputSucc
      
    end
    puts "Done watching."
  end
  
  def reload()
    puts "Reloading list of watched files..."
    @@instance.setupWatchfiles()
    puts "done."
  end
  
  def run()
    Daemon.init()
    setupWatchfiles()
    watch()
  end
  
end

Logwatch.instance.run()


> I don't know whether select() works at all on regular files.

At least it looks as if it does.

Michael

-- 
Michael Schuerig
mailto:schuerig@acm.org
http://www.schuerig.de/michael/

In This Thread