[#30220] schedule for Ruby 1.8.6 — "Akinori MUSHA" <knu@...>

 ruby-core を読んでいない人もいると思うので、ここでもアナウンス

20 messages 2007/01/30

[ruby-dev:30181] Open3.popen3 の終了処理

From: とみたまさひろ <tommy@...>
Date: 2007-01-24 14:42:02 UTC
List: ruby-dev #30181
とみたです。

Open3.popen3 がコマンドの exec に失敗した場合に、通常の終了処理を行なっ
てしまい、at_exit 等が実行されてしまいます。

% ruby -ropen3 -e 'at_exit{p $$}; Open3.popen3("/bin/hogehoge"){|i,o,e| puts o.read}'
30583        ← 子(孫?)プロセスの出力
30581

簡単にパッチを作ってみました。
# エラーメッセージの形式が変わってしまいますけど…。

--- open3.rb.orig	2006-08-05 07:00:21.000000000 +0900
+++ open3.rb	2007-01-24 23:13:42.000000000 +0900
@@ -45,7 +45,12 @@
 	STDERR.reopen(pe[1])
 	pe[1].close
 
-	exec(*cmd)
+	begin
+	  exec(*cmd)
+	rescue Exception => e
+	  STDERR.puts e.inspect
+	  exit!(1)
+	end
       }
       exit!(0)
     }


-- 
とみたまさひろ <tommy@tmtm.org> 『Postfix辞典』ISBN:4798110353
3469 42CC 4D32 F53C AD98  65A5 8C37 FF09 69C1 6040

In This Thread

Prev Next