[ruby-list:50736] IO.popenでストールする

From: haruka@...
Date: 2019-01-08 07:20:52 UTC
List: ruby-list #50736
正木です。

fork do
   something
end
Process.wait

なコードがハングしてしまい、INTすると次のように出ました。

Traceback (most recent call last):
         5: from /usr/local/bin/foo-parserd.rb:23:in `<main>'
         4: from /usr/local/bin/foo-parserd.rb:23:in `fork'
         3: from /usr/local/bin/foo-parserd.rb:26:in `block in <main>'
         2: from /usr/lib/ruby/site_ruby/foo/parser.rb:16:in `parse'
         1: from /usr/lib/ruby/site_ruby/foo/parser.rb:71:in `rescue in 
parse'
/usr/lib/ruby/site_ruby/foo/parser.rb:71:in `popen': Interrupt
Traceback (most recent call last):
         1: from /usr/local/bin/foo-parserd.rb:35:in `<main>'
/usr/local/bin/foo-parserd.rb:35:in `wait': Interrupt

parser.rb:71はrescue内でIO.popenによりエラーを書き出しています。

IO.popen(["foo-critical.zsh", project], "w") do |io|
   io.puts e.inspect
   io.puts e.backtrace
end

IO.popenの行が71行目です。
foo-critical.zshはほぼ単純にcatするだけのものです。

fname="/var/log/foo/errors/$(date +%y%m%d%H%M%S).$$.err"
cat > $fname

71行目でハングするのがどういう状況なのか、わかる方いらっしゃいましたらご教示いただけますでしょうか。
よろしくおねがいします。

In This Thread

Prev Next