今日したこと

  • gaucheの補完のelispを改良
    • cachefileを作成することにした
      • 1回目以降は読み込みがはやくなった。
    • (存在する場合は)定義してあるファイルに飛べるようにした
  • pipeとforkの使いかたを知った
    • rubyのforkはblock内が子プロセス

pipeとfork

自分の出力をフィルタする - Gaucheクックブック
理解しているかどうか怪しかったのでrubyで同じような処理を書いた。

class A
  def initialize
    @n = 0
  end
  def say x
    puts "#{@n}: #{x}"    
    @n += 1
  end
end

a = A.new
pi = IO.pipe
#pi.first = in, pi.last = out

fork do 
  pi.last.close
  pi.first.each { |x| a.say x}
  pi.first.close
  exit 0
end
pi.first.close
$stdout = pi.last

puts "test"
puts "foo"
puts "bar"

# >> 0: test
# >> 1: foo
# >> 2: bar