簡単なプロセス間通信(Ruby)
Thread と IO.pipe を使ってみます。
read, write = IO.pipe Thread.new do while (a = read.gets) != "end\n" print a end end 5.times do write.puts "send!" sleep(rand(3) + 1) end write.puts "end" write.close read .close
結果。適度にスリープしながら "send!" を 5回表示する。
require 'bundler/setup' require 'gtk2' read, write = IO.pipe fork do w = Gtk::Window.new w.signal_connect("destroy") {Gtk.main_quit} w.set_size_request(200, 100) Gtk.idle_add do puts read.gets read.close Gtk.main_quit end w.show_all Gtk.main end sleep(3) write.puts "test!" write.close