ライブラリ
- ビルトイン (220)
-
shell
/ process-controller (6)
クラス
- File (11)
- Object (11)
-
Shell
:: ProcessController (6)
キーワード
- NotImplementedError (11)
- Win32ネイティブ版Rubyの互換性問題 (11)
-
at
_ exit (11) - exec (44)
- exit! (11)
- flock (11)
-
pipe
_ open (11) -
rb
_ fork (1) -
rb
_ fork _ err (1) -
respond
_ to? (11) - sfork (6)
- trap (22)
- wait (11)
- wait2 (11)
- waitall (11)
- waitpid (11)
- waitpid2 (11)
- セキュリティモデル (2)
検索結果
先頭5件
-
Kernel
. # fork -> Integer | nil (21242.0) -
fork(2) システムコールを使ってプロセスの複製を作 ります。親プロセスでは子プロセスのプロセスIDを、子プロセスでは nil を返します。ブロックを指定して呼び出した場合には、生成し た子プロセスでブロックを評価します。
...
fork(2) システムコールを使ってプロセスの複製を作
ります。親プロセスでは子プロセスのプロセスIDを、子プロセスでは
nil を返します。ブロックを指定して呼び出した場合には、生成し
た子プロセスでブロックを評価しま......
fork 前に STDOUT と STDERR を IO#flush します。
@raise NotImplementedError 実行環境がこのメソッドに対応していないとき発生します。
//emlist[ブロックを指定しなかった場合][ruby]{
if child_pid = fork
puts "parent process. pid: #{Process.pid}, child......pid: #{child_pid}"
# => parent process. pid: 81060, child pid: 81329
# 親プロセスでの処理
# ...
# 子プロセスの終了を待って終了。
Process.waitpid(child_pid)
else
puts "child process. pid: #{Process.pid}"
# => child process. pid: 81329
# 子プロセスでの... -
Kernel
. # fork { . . . } -> Integer | nil (21242.0) -
fork(2) システムコールを使ってプロセスの複製を作 ります。親プロセスでは子プロセスのプロセスIDを、子プロセスでは nil を返します。ブロックを指定して呼び出した場合には、生成し た子プロセスでブロックを評価します。
...
fork(2) システムコールを使ってプロセスの複製を作
ります。親プロセスでは子プロセスのプロセスIDを、子プロセスでは
nil を返します。ブロックを指定して呼び出した場合には、生成し
た子プロセスでブロックを評価しま......
fork 前に STDOUT と STDERR を IO#flush します。
@raise NotImplementedError 実行環境がこのメソッドに対応していないとき発生します。
//emlist[ブロックを指定しなかった場合][ruby]{
if child_pid = fork
puts "parent process. pid: #{Process.pid}, child......pid: #{child_pid}"
# => parent process. pid: 81060, child pid: 81329
# 親プロセスでの処理
# ...
# 子プロセスの終了を待って終了。
Process.waitpid(child_pid)
else
puts "child process. pid: #{Process.pid}"
# => child process. pid: 81329
# 子プロセスでの... -
Process
. fork -> Integer | nil (18224.0) -
子プロセスを生成します。関数 Kernel.#fork と同じです。
...子プロセスを生成します。関数 Kernel.#fork と同じです。
@raise NotImplementedError メソッドが現在のプラットフォームで実装されていない場合に発生します。
@see fork(2)... -
Process
. fork { . . . } -> Integer | nil (18224.0) -
子プロセスを生成します。関数 Kernel.#fork と同じです。
...子プロセスを生成します。関数 Kernel.#fork と同じです。
@raise NotImplementedError メソッドが現在のプラットフォームで実装されていない場合に発生します。
@see fork(2)... -
Shell
:: ProcessController # sfork(command) { . . . } -> [Integer , IO , IO] (12116.0) -
シンプルな fork です。
...シンプルな fork です。
@param command コマンドを指定します。
@return [PID, 入力用 IO, 出力用 IO] からなる配列を返します。... -
rb
_ pid _ t rb _ fork(int *status , int (*chfunc)(void*) , void *charg , VALUE fds) (6200.0) -
この関数は deprecated です。
この関数は deprecated です。 -
rb
_ pid _ t rb _ fork _ err(int *status , int (*chfunc)(void* , char * , size _ t) , void *charg , VALUE fds , char *errmsg , size _ t errmsg _ buflen) (6200.0) -
この関数は deprecated です。
この関数は deprecated です。 -
File
# flock(operation) -> 0 | false (6106.0) -
ファイルをロックします。
...クされます。
ロックの取得に成功した場合は 0 を返します。
File::LOCK_NB (ノンブロッキング) を指定すると、本来ならブロックされる場合に
ブロックされずに false を返すようになります。
@param operation ロックに対する操作......rror 自身が close されている場合に発生します。
@raise Errno::EXXX operation に不正な整数を与えた場合などに発生します。
引数 operation に有効な定数は以下の通りです。定数は File::Constants で定義されていますが、
File クラスの......f.flush
f.truncate(f.pos)
}
# 読み込みロック(read lock)を使用してカウンタを読み込み。
File.open("counter", "r") {|f|
f.flock(File::LOCK_SH)
p f.read
}
//}
//emlist[例2:][ruby]{
f = File.open("/tmp/foo", "w")
f.flock(File::LOCK_EX)
puts "locked by process1"
fork {... -
Process
. # waitall -> [[Integer , Process :: Status]] (6106.0) -
全ての子プロセスが終了するのを待ちます。 終了した子プロセスの pid と終了ステータス (Process::Status) の配列の配列を返します。 子プロセスがいない状態でこのメソッドを呼び出すと空の配列を返します。
...配列を返します。
$? には最後に終了した子プロセスの Process::Status オブジェクトが設定されます。
2.times {|n|
Process.fork() { exit n }
}
p Process.waitall
#=> :Status: pid=2766,exited(1)>], [2765, #<Process::Status: pid=2765,exited(1)>... -
NotImplementedError (6018.0)
-
現在のプラットフォームで実装されていない機能が呼び出されたときに発生します。
...forkのシステムコールに依存するメソッドが呼び出されたとき、OSまたはRubyの実行環境がそれらのシステムコールをサポートしていない場合、この例外が発生します。
forkがNotImplementedErrorを発生させる場合respond_to?(:fork)はfals... -
Kernel
. # exit!(status = false) -> () (3112.0) -
Rubyプログラムの実行を即座に終了します。 status として整数が与えられた場合、その値を Ruby コマンドの終了ステータスとします。 デフォルトの終了ステータスは 1 です。
...場合 0、 false の場合 1 を引数に指定したとみなされます。この値はCレベルの定数
EXIT_SUCCESS、EXIT_FAILURE の値なので、正確には環境依存です。
exit! は exit とは違って、例外処理などは一切行ないませ
ん。 Kernel.#fork の後、子......alse で与えます。
//emlist[例][ruby]{
STDOUT.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... -
Signal
. # trap(signal) { . . . } -> String | Proc | nil (3106.0) -
指定された割り込み signal に対するハンドラとして command を登録します。 指定したシグナルが捕捉された時には例外が発生せず、代わりに command が実行されます。 ブロックを指定した場合にはブロックをハンドラとして登録します。
...指定された割り込み signal に対するハンドラとして
command を登録します。
指定したシグナルが捕捉された時には例外が発生せず、代わりに command が実行されます。
ブロックを指定した場合にはブロックをハンドラとして登......ないときも nil を返します。
ruby の仕組みの外でシグナルハンドラが登録された場合
(例えば拡張ライブラリが独自に sigaction を呼んだ場合など)
も nil を返します。
@param signal シグナル名を表す文字列か Symbol、またはシグナ......8e45914@-: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("CLD") { puts "Child died" }
fork && Process.wait
#...