検索結果
先頭5件
-
Process
. # kill(signal , pid , *rest) -> Integer (18208.0) -
pid で指定されたプロセスにシグナルを送ります。signal はシグナル番号(整数)かその名前(文字列またはSymbol)で指定します。 全てのシグナル送信に成功した場合、指定した pid の総数を返します。
...けたものと見なされます。
@param rest プロセス ID を整数で指定します。
@raise ArgumentError 存在しないシグナルを指定した場合に発生します。
@raise Errno::EXXX シグナル送信に失敗した場合に発生します。
@see Kernel.#trap, kill(2)... -
Signal
. # trap(signal) { . . . } -> String | Proc | nil (55.0) -
指定された割り込み signal に対するハンドラとして command を登録します。 指定したシグナルが捕捉された時には例外が発生せず、代わりに command が実行されます。 ブロックを指定した場合にはブロックをハンドラとして登録します。
...in32,
mingw など) で動く ruby では INT ILL FPE SEGV
TERM BREAK ABRT EXIT しか定義されていません。
いくつかのシグナルに対して、Ruby インタプリタは例外 Interrupt や
SignalException を発生させます。このよ......例:
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.trap(:INT, proc{ p nil }) # => #<Pr......oc:0x8e45ae0@-:2>
Signal.trap(:INT, "SIG_IGN") # => #<Proc:0x8e45914@-:3>
Signal.trap(:INT, "DEFAULT") # => "IGNORE"
Signal.trap(:INT, "EXIT") # => "DEFAULT"
Signal.trap(:INT, nil) # => "EXIT"
//emlist[例][ruby]{
Signal.trap(0, proc { puts "Terminating: #{$$}"... -
Signal
. # trap(signal , command) -> String | Proc | nil (55.0) -
指定された割り込み signal に対するハンドラとして command を登録します。 指定したシグナルが捕捉された時には例外が発生せず、代わりに command が実行されます。 ブロックを指定した場合にはブロックをハンドラとして登録します。
...in32,
mingw など) で動く ruby では INT ILL FPE SEGV
TERM BREAK ABRT EXIT しか定義されていません。
いくつかのシグナルに対して、Ruby インタプリタは例外 Interrupt や
SignalException を発生させます。このよ......例:
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.trap(:INT, proc{ p nil }) # => #<Pr......oc:0x8e45ae0@-:2>
Signal.trap(:INT, "SIG_IGN") # => #<Proc:0x8e45914@-:3>
Signal.trap(:INT, "DEFAULT") # => "IGNORE"
Signal.trap(:INT, "EXIT") # => "DEFAULT"
Signal.trap(:INT, nil) # => "EXIT"
//emlist[例][ruby]{
Signal.trap(0, proc { puts "Terminating: #{$$}"... -
Signal
. # signame(signo) -> String (25.0) -
引数で指定されたシグナル番号をシグナル名に変換して返します。
...引数で指定されたシグナル番号をシグナル名に変換して返します。
Signal.trap("INT") { |signo| puts Signal.signame(signo) }
Process.kill("INT", 0)
# => INT
@see Signal.#list... -
Signal
. # signame(signo) -> String | nil (25.0) -
引数で指定されたシグナル番号をシグナル名に変換して返します。 対応するシグナル番号が存在しない場合は nil を返します。
...引数で指定されたシグナル番号をシグナル名に変換して返します。
対応するシグナル番号が存在しない場合は nil を返します。
Signal.trap("INT") { |signo| puts Signal.signame(signo) }
Process.kill("INT", 0)
# => INT
@see Signal.#list... -
Timeout
. # timeout(sec , exception _ class = nil) {|i| . . . } -> object (13.0) -
ブロックを sec 秒の期限付きで実行します。 ブロックの実行時間が制限を過ぎたときは例外 Timeout::Error が発生します。
...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", min[0] + min[1], min[0]*4.0/(min[0]+min[1])
#例
#=> 417519: pi = 3.1414......43
例 独自の例外を発生させるタイムアウト
#!/usr/bin/env ruby
require 'timeout'
class MYError < Exception;end
begin
Timeout.timeout(5, MYError) {
sleep(30)
}
rescue MYError => err
puts "MYError"
puts err
end
=== 注意
timeout による割り......or 例外があがっています。
例 timeout が割り込めない
require 'timeout'
require 'socket'
t = 0.1
start = Time.now
begin
Timeout.timeout(t) {
p TCPSocket.gethostbyname("www.ruby-lang.org")
# (A)
}
ensure
p Time.now - start
end
# 実行例
=... -
Timeout
. # timeout(sec , exception _ class , message) {|i| . . . } -> object (13.0) -
ブロックを sec 秒の期限付きで実行します。 ブロックの実行時間が制限を過ぎたときは例外 Timeout::Error が発生します。
...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", min[0] + min[1], min[0]*4.0/(min[0]+min[1])
#例
#=> 417519: pi = 3.1414......43
例 独自の例外を発生させるタイムアウト
#!/usr/bin/env ruby
require 'timeout'
class MYError < Exception;end
begin
Timeout.timeout(5, MYError) {
sleep(30)
}
rescue MYError => err
puts "MYError"
puts err
end
=== 注意
timeout による割り......or 例外があがっています。
例 timeout が割り込めない
require 'timeout'
require 'socket'
t = 0.1
start = Time.now
begin
Timeout.timeout(t) {
p TCPSocket.gethostbyname("www.ruby-lang.org")
# (A)
}
ensure
p Time.now - start
end
# 実行例
=...