ライブラリ
- ビルトイン (44)
- irb (11)
-
shell
/ process-controller (6)
クラス
キーワード
-
USING
_ AT _ EXIT _ WHEN _ PROCESS _ EXIT (6) - exit! (11)
- fork (22)
-
irb
_ at _ exit (11) -
ruby 1
. 6 feature (11) - 制御構造 (11)
検索結果
先頭5件
-
Kernel
. # at _ exit { . . . } -> Proc (18255.0) -
与えられたブロックをインタプリタ終了時に実行します。
...与えられたブロックをインタプリタ終了時に実行します。
at_exitがメソッドである点を除けば、END ブロックによる終了
処理の登録と同等です。登録した処理を取り消すことはできません。
spec/terminateも参照してください。......Proc オブジェクトで返します。
//emlist[例][ruby]{
3.times do |i|
at_exit{puts "at_exit#{i}"}
end
END{puts "END"}
at_exit{puts "at_exit"}
puts "main_end"
#=> main_end
# at_exit
# END
# at_exit2
# at_exit1
# at_exit0
//}
@see d:spec/control#END,Kernel.#exit!,Kernel.#fork... -
IRB
. irb _ at _ exit -> () (6217.0) -
at_exit で登録された処理を実行します。
...
at_exit で登録された処理を実行します。
ユーザが直接使用するものではありません。... -
Shell
:: ProcessController :: USING _ AT _ EXIT _ WHEN _ PROCESS _ EXIT -> true (6201.0) -
@todo
@todo -
ruby 1
. 6 feature (5256.0) -
ruby 1.6 feature ruby version 1.6 は安定版です。この版での変更はバグ修正がメイン になります。
...グ修正がメイン
になります。
((<stable-snapshot|URL:ftp://ftp.netlab.co.jp/pub/lang/ruby/stable-snapshot.tar.gz>)) は、日々更新される安定版の最新ソースです。
== 1.6.8 (2002-12-24) -> stable-snapshot
: 2003-01-22: errno
EAGAIN と EWOULDBLOCK が同じ値の......> ruby 1.6.7 (2002-03-01) [i586-linux]
Errno::EAGAIN
Errno::EWOULDBLOCK
=> ruby 1.6.8 (2002-12-24) [i586-linux]
Errno::EAGAIN
-:2: uninitialized constant EWOULDBLOCK at Errno (NameError)
=> ruby 1.6.8 (2003-02-13) [i586-linux]......# => ruby 1.6.4 (2001-06-04) [i586-linux]
[1, 2, 3]
: $SAFE / alias
$SAFE = 4 のときグローバル変数のエイリアスを許さないようにしました。
((<ruby-dev:13287>))
: ((<open3/Open3.popen3>))
終了したプロセスが at_exit を呼ばないように... -
Kernel
. # exit!(status = false) -> () (106.0) -
Rubyプログラムの実行を即座に終了します。 status として整数が与えられた場合、その値を Ruby コマンドの終了ステータスとします。 デフォルトの終了ステータスは 1 です。
...T.sync = true #表示前に終了しないようにする
puts 'start'
begin
puts 'start1...'
exit!
ensure
puts 'end1...' #実行されない
end
puts 'end' #実行されない
#=> start
# start1...
#終了ステータス:1
//}
@see Kernel.#exit,Kernel.#abort,Kernel.#at_exit,Kernel.#fork... -
Kernel
. # fork -> Integer | nil (106.0) -
fork(2) システムコールを使ってプロセスの複製を作 ります。親プロセスでは子プロセスのプロセスIDを、子プロセスでは nil を返します。ブロックを指定して呼び出した場合には、生成し た子プロセスでブロックを評価します。
...puts "parent process. pid: #{Process.pid}, child pid: #{child_pid}"
# => parent process. pid: 79055, child pid: 79602
# 親プロセスでの処理
# ...
# 子プロセスの終了を待って終了。
Process.waitpid(child_pid)
//}
@see IO.popen,IO.pipe,Kernel.#at_exit,Kernel.#exit!, fork(2)... -
Kernel
. # fork { . . . } -> Integer | nil (106.0) -
fork(2) システムコールを使ってプロセスの複製を作 ります。親プロセスでは子プロセスのプロセスIDを、子プロセスでは nil を返します。ブロックを指定して呼び出した場合には、生成し た子プロセスでブロックを評価します。
...puts "parent process. pid: #{Process.pid}, child pid: #{child_pid}"
# => parent process. pid: 79055, child pid: 79602
# 親プロセスでの処理
# ...
# 子プロセスの終了を待って終了。
Process.waitpid(child_pid)
//}
@see IO.popen,IO.pipe,Kernel.#at_exit,Kernel.#exit!, fork(2)... -
制御構造 (42.0)
-
制御構造 条件分岐: * if * unless * case 繰り返し: * while * until * for * break * next * redo * retry 例外処理: * raise * begin その他: * return * BEGIN * END
...ます。
//emlist[][ruby]{
def iter
# (a)
# :
# (b)
yield
# (c)
# :
# (d)
end
iter { redo } # -> (b) へ飛ぶ
iter { next } # -> (c) へ飛ぶ
iter { break } # -> (d) へ飛ぶ
//}
(a) は、厳密には引数評価から始まります。(b) はブロック実行の直前......def iter(var = p("(a)"))
yield
p "(c)"
ensure
p "(d)"
end
iter { p "(b)"; redo } # -> (a) .. (b)(b)(b)(b) ...
iter { p "(b)"; next } # -> (a) .. (b)(c) .. (d)
iter { p "(b)"; break } # -> (a)..(b)(d)
//}
====[a:retry] retry
例:
retry
文法:
retry
retr......のような目的には Kernel.#at_exit を使
います。
//emlist[][ruby]{
5.times do |i|
END { p i }
end
# => 0
//}
END をメソッド定義式中に書くと警告が出ます。
意図的にこのようなことを行いたい場合は Kernel.#at_exit を使
います。
def foo...