2011-02-10 19 views
1

次のコードタイムアウトの問題

require 'timeout' 

begin 
    timeout(20) do    # Line 4 
    result = `hostname` 
    end       # Line 6 
rescue Timeout::Error 
    puts "Timeout" 
    exit 
end 

puts "Result:" + result  # Line 12 

はエラー

issue.rbをスローします)

私はtimeout要素(行4と6)をコメントアウトするとうまくいきます。私はIO.popen、IO.selectなどを使用しようとしましたが、これは役に立ちません。私はこのタイムアウト技術を他の多くの分野で使ってきましたが、うまくいきました。

私はずっと大きな値と小さな値を実験しているので、タイムアウト値には関係していません。

Windows XPではRuby 1.92を使用しています。どんな助けでも大歓迎です。

p.s.私の元の問題は「ホスト名」ではなく、より複雑なSQL Serverバッチジョブを実行していました。ボーナスポイントとして、タイムアウトを超えた長時間実行されるシステムタスクが自動的に強制終了されますか?私はタイムアウトライブラリについての多くの記事を読んで、システムタスクを実行中のときにタイムアウトを尊重しないのですか?

答えて

1

result変数がタイムアウトブロック内で定義されているため、外部スコープには表示されません。前もって初期化する必要があります。

result = nil 
begin 
    timeout(20) do    # Line 4 
    result = `hostname` 
    end       # Line 6 
rescue Timeout::Error 
... 
+0

ありがとうございます。午前中に私を盗んだ。 –

関連する問題