84件ヒット
[1-84件を表示]
(0.010秒)
ライブラリ
- ビルトイン (46)
- monitor (12)
- thread (2)
-
webrick
/ httpproxy (12) -
webrick
/ httpserver (12)
キーワード
- ConditionVariable (12)
- HTTPProxyServer (12)
- HTTPServer (12)
- Interrupt (12)
- Monitor (12)
- SignalException (12)
- Status (12)
検索結果
-
SignalException (6001.0)
-
捕捉していないシグナルを受け取ったときに発生します。
...トの状態では、
以下のシグナルが SignalException を発生させます。
* SIGALRM
* SIGHUP
* SIGINT (※ただし以下参照)
* SIGQUIT
* SIGUSR1
* SIGUSR2
* SIGTERM
なお、SIGINT シグナルを受けた場合は SignalException の下位クラスである
Interru... -
Process
:: Status (67.0) -
プロセスの終了ステータスを表すクラスです。 メソッド Process.#wait2 などの返り値として使われます。
...り値として使われます。
=== 使用例
wait を使用した例
fork { exit }
Process.wait
case
when $?.signaled?
p "child #{$?.pid} was killed by signal #{$?.termsig}"
if $?.coredump? # システムがこのステータスをサポートしてなければ常にfalse......child #{$?.pid} was stopped by signal #{$?.stopsig}"
when $?.exited?
p "child #{$?.pid} exited normally. status=#{$?.exitstatus}"
else
p "unknown status %#x" % $?.to_i
end
SIGCHLD を trap する例
trap(:SIGCHLD) {|sig|
puts "interrupted by signal #{sig} at #{caller[1]}"......CED)
case
when $?.signaled?
puts " child #{$?.pid} was killed by signal #{$?.termsig}"
if $?.coredump?
puts " child #{$?.pid} dumped core."
end
when $?.stopped?
puts " child #{$?.pid} was stopped by signal #{$?.stopsig}"
when $?... -
Thread
:: ConditionVariable (25.0) -
スレッドの同期機構の一つである状態変数を実現するクラスです。
...など)が満たされるまで wait メソッドで
スレッドを止めます。他のスレッド b において条件が満たされたなら signal
メソッドでスレッド a に対して条件が成立したことを通知します。これが典型的な
使用例です。
mutex = Mu......すための操作
cv.signal
}
}
以下は 14445 で紹介されている例です。@q が空になった場合、
あるいは満タンになった場合に Condition Variable を使って wait しています。
require 'thread'
class TinyQueue
def initialize(max=......@full.wait(@mutex) if count == @max
@q.push v
@empty.signal if count == 1
}
end
def deq
@mutex.synchronize{
@empty.wait(@mutex) if count == 0
v = @q.shift
@full.signal if count == (@max - 1)
v
}
end
alias send enq... -
Interrupt (7.0)
-
SIGINT シグナルを捕捉していないときに SIGINT シグナルを受け取ると発生します。 SIGINT 以外のシグナルを受信したときに発生する例外については SignalException を参照してください。
...ます。
SIGINT 以外のシグナルを受信したときに発生する例外については
SignalException を参照してください。
使用例
=begin
#SIGINTを捕捉したい場合
Signal.trap('INT'){
print "\nINTを捕捉した。\n"
exit 1
}
=end
begin
begin... -
Monitor (7.0)
-
スレッドの同期機構としてのモニター機能を提供するクラスです。 また同じスレッドから何度も lock できる Mutex としての機能も提供します。
...e { buf.empty? }
print buf.shift
end
end
end
# producer
while line = ARGF.gets
mon.synchronize do
buf.push(line)
empty_cond.signal
end
end
//}
2回ロックしてもデッドロックにならない例です。
//emlist[デッドロックにならない例][ruby]{
require... -
WEBrick
:: HTTPProxyServer (7.0) -
プロクシの機能を提供するクラスです。CONNECT メソッドにも対応しています。
...います。
* https://magazine.rubyist.net/articles/0002/0002-WEBrickProxy.html
以下は完全に動作するプロクシサーバの例です。
require 'webrick'
require 'webrick/httpproxy'
s = WEBrick::HTTPProxyServer.new(Port: 8080)
Signal.trap('INT') do
s.shutdown
end
s.start... -
WEBrick
:: HTTPServer (7.0) -
HTTP サーバの機能を提供するクラスです。
...rver.new({:DocumentRoot => '/home/username/public_html/',
:BindAddress => '127.0.0.1',
:Port => 10080})
srv.mount('/hoge.pl', WEBrick::HTTPServlet::CGIHandler, 'really_executed_script.rb')
Signal.trap(:INT){ srv.shutdown }
srv.start...