345件ヒット
[301-345件を表示]
(0.048秒)
ライブラリ
- ビルトイン (156)
-
irb
/ cmd / subirb (24) -
irb
/ extend-command (12) - open3 (24)
-
shell
/ process-controller (6) -
shell
/ system-command (6) - timeout (21)
クラス
-
IRB
:: ExtendCommand :: Kill (12) -
Shell
:: ProcessController (6) -
Shell
:: SystemCommand (6) - Thread (96)
モジュール
-
IRB
:: ExtendCommandBundle (12) - Open3 (24)
- Process (24)
- Signal (24)
- Timeout (21)
キーワード
-
1
. 6 . 8から1 . 8 . 0への変更点(まとめ) (12) - Kill (12)
- Thread (12)
- WUNTRACED (12)
- backtrace (12)
- execute (12)
- exit (12)
-
handle
_ interrupt (12) -
install
_ extend _ commands (12) - irb (12)
-
irb
/ cmd / subirb (12) -
kill
_ job (6) -
pipeline
_ start (24) -
rb
_ thread _ kill (12) -
rb
_ thread _ s _ kill (12) -
ruby 1
. 8 . 4 feature (12) - status (12)
- terminate (12)
- timeout (21)
- trap (24)
- value (12)
- スレッド (12)
- 終了処理 (12)
検索結果
先頭4件
-
終了処理 (28.0)
-
終了処理 Ruby はスクリプトの終端に達した場合や捕捉していない例外が発生した場 合に終了します(関数 Kernel.#exit や Kernel.#abort 、メインスレッドに対する Thread.kill などは SystemExit 例外を発生させます)。終了時には以下 の処理が順に実行されます。
....#exit や Kernel.#abort
、メインスレッドに対する Thread.kill などは
SystemExit 例外を発生させます)。終了時には以下
の処理が順に実行されます。
(1) すべてのスレッドを Thread.kill する。
(1) Ruby の擬似シグナル SIGEXIT のハンド......ラが登録されていればそれを実
行する(Kernel.#trap を参照)。
(1) d:spec/control#END ブロック(END { ... } または関数
Kernel.#at_exit で指定したブロック)が登録されていれば、
そのブロックを登録とは逆順に実行する。こ......生
した大域脱出はそのブロックの処理を中断するが、スクリプトはまだ終
了しない。
(1) ObjectSpace.#define_finalizer により、ファイナ
ライザが登録されていればそれらを実行する。実行順序は不定。
ファイ... -
Signal
. # trap(signal) { . . . } -> String | Proc | nil (12.0) -
指定された割り込み signal に対するハンドラとして command を登録します。 指定したシグナルが捕捉された時には例外が発生せず、代わりに command が実行されます。 ブロックを指定した場合にはブロックをハンドラとして登録します。
...指定された割り込み signal に対するハンドラとして
command を登録します。
指定したシグナルが捕捉された時には例外が発生せず、代わりに command が実行されます。
ブロックを指定した場合にはブロックをハンドラとして登......な値として 0 または "EXIT" が指定できます。
これは「プログラムの終了時」を表します。
@param command シグナルハンドラとして Ruby プログラムを表す文字列か Proc オブジェクト、また次に挙げる文字列を......捕捉することもできます。
例:
begin
Process.kill :QUIT, $$ # 自身にSIGQUITを送信
rescue SignalException
puts "rescue #$!"
end
# => rescue SIGQUIT
例:
Signal.trap(:INT, "p true") # => "DEFAULT"
Signal.trap(:INT) { p false } # => "p true"
Signal... -
Timeout
. # timeout(sec , exception _ class = nil) {|i| . . . } -> object (12.0) -
ブロックを sec 秒の期限付きで実行します。 ブロックの実行時間が制限を過ぎたときは例外 Timeout::Error が発生します。
...ire 'timeout'
def calc_pi(min)
loop do
x = rand
y = rand
x**2 + y**2 < 1.0 ? min[0] += 1 : min[1] += 1
end
end
t = 5
min = [ 0, 0]
begin
Timeout.timeout(t){
calc_pi(min)
}
rescue Timeout::Error
puts "timeout"
end
printf "%d: pi = %f\n"......nv ruby
require 'timeout'
class MYError < Exception;end
begin
Timeout.timeout(5, MYError) {
sleep(30)
}
rescue MYError => err
puts "MYError"
puts err
end
=== 注意
timeout による割り込みは Thread によって実現されています。
C 言語レベル......popen("./loop.sh")
pid = com.pid
while line = com.gets
print line
end
}
rescue Timeout::Error => err
puts "timeout: shell execution."
Process.kill('SIGINT', pid)
printf "[result]\t%s", com.read
com.close unless com.nil?
end
#止まっているか......た場合は
"execution expired" になります.
例 長い計算のタイムアウト
require 'timeout'
def calc_pi(min)
loop do
x = rand
y = rand
x**2 + y**2 < 1.0 ? min[0] += 1 : min[1] += 1
end
end
t = 5
min = [ 0, 0]
begin
Timeout.t......:Error
puts "timeout"
end
printf "%d: pi = %f\n", min[0] + min[1], min[0]*4.0/(min[0]+min[1])
#例
#=> 417519: pi = 3.141443
例 独自の例外を発生させるタイムアウト
#!/usr/bin/env ruby
require 'timeout'
class MYError < Exception;end
begin
Timeout.timeout(5... -
Timeout
. # timeout(sec , exception _ class , message) {|i| . . . } -> object (12.0) -
ブロックを sec 秒の期限付きで実行します。 ブロックの実行時間が制限を過ぎたときは例外 Timeout::Error が発生します。
...た場合は
"execution expired" になります.
例 長い計算のタイムアウト
require 'timeout'
def calc_pi(min)
loop do
x = rand
y = rand
x**2 + y**2 < 1.0 ? min[0] += 1 : min[1] += 1
end
end
t = 5
min = [ 0, 0]
begin
Timeout.t......:Error
puts "timeout"
end
printf "%d: pi = %f\n", min[0] + min[1], min[0]*4.0/(min[0]+min[1])
#例
#=> 417519: pi = 3.141443
例 独自の例外を発生させるタイムアウト
#!/usr/bin/env ruby
require 'timeout'
class MYError < Exception;end
begin
Timeout.timeout(5......popen("./loop.sh")
pid = com.pid
while line = com.gets
print line
end
}
rescue Timeout::Error => err
puts "timeout: shell execution."
Process.kill('SIGINT', pid)
printf "[result]\t%s", com.read
com.close unless com.nil?
end
#止まっているか...