[#36899] シグナルのtrapについて — sakazuki <QZS01353@...>
こんにちは。sakazukiです。
7 messages
2003/01/07
[#36912] Numeric#bankers_round — Take_tk <ggb03124@...>
たけ(tk)です
5 messages
2003/01/08
[#36924] vruby030101が何か変 — Mitsuo Igarashi <mitsu5@...>
VisualuRuby を使わしていただこうと、インストールしました。
8 messages
2003/01/10
[#36926] Re: vruby030101が何か変
— NISHIKAWA <nyasu@...3web.ne.jp>
2003/01/11
こんにちは。nyasu@3web です。
[#36940] include した定数に対する defined? — ABE Shigeru <shiger-a@...>
阿部です。立て続けで、すみません。
6 messages
2003/01/16
[#36945] Arrayの判定 — Nonta <nonta@...>
はじめまして。野田と申します。
7 messages
2003/01/17
[#36955] JIS符号化ライブラリ — Satoshi Osabe <s-osabe@...>
長部と申します。
6 messages
2003/01/18
[#36957] Unicode 対応の nkf は? — Take_tk <ggb03124@...>
たけ(tk)です
6 messages
2003/01/18
[#36971] ERB2 bug? — MoonWolf <moonwolf@...>
MoonWolfです。
7 messages
2003/01/19
[#37001] CGIで画像のサイズ変更をしたい。 — FUJIOKA Takeyuki <fuji@...>
藤岡と申します。
6 messages
2003/01/27
[#37005] ruby-1.8.0 mingw build 失敗 — Mitsuo Igarashi <mitsu5@...>
ruby-1.8.0 を gcc -mno-cygwin でビルドしようとしましたが
7 messages
2003/01/27
[#37008] win2000server+rbcw164jでCGIエラー — Misawa Shinobu <misawa@...>
はじめまして。ミサワといいます。
7 messages
2003/01/27
[#37021] [RAA] RAA/2.3 — "U.Nakamura" <usa@...>
みなさんこんにちは。
20 messages
2003/01/30
[#37026] Re: [RAA] RAA/2.3
— MoonWolf <moonwolf@...>
2003/01/30
MoonWolfです。
[ruby-list:36901] Re: シグナルのtrapについて
From:
sakazuki <QZS01353@...>
Date:
2003-01-07 03:24:16 UTC
List:
ruby-list #36901
久保田さん。情報ありがとうございます。
Solarisはどうもちょっと特殊なんでしょうか?
以下で
http://www.idg.co.jp/sw/back/series/199910_02_pra.html
> Solarisでは、POSIX標準で定められた一般的なUNIXのシグナルAPIに準拠する一方
> で、マルチスレッド・アーキテクチャに対応するシグナル機能もサポートしている。
>
> 従来のUNIXシステムでは、シグナルは「発生」と「実行」という2つのフェーズを
> 経て送信されていた。そのうち、発生はシグナルが最初に生成される段階を指す。
> 一方、実行は送信されたシグナルに対応するアクション(Ignoreを含む)が実際に
> 実行される段階である。もしシグナルがブロックされた場合は、実行が延期され、
> シグナルはペンディング状態になる。
>
> 一方、Solarisでは、「thr create(3T)」や「pthread create(3T)」ルーチンによ
> って生成された個々のユーザー・スレッドが別々のシグナル・マスクを備えている。
> そのため、それぞれのスレッドは同じプロセス内で動作する他のスレッドとは無関
> 係に、シグナルを自由にブロックできる。つまり、複数のスレッドがあらゆるシグ
> ナルを個別に受信できるのである。
というような記述を見つけました。
とすると、Rubyのtrapではプロセスのシグナルのみトラップ出来て、スレッドにはシ
グナルが届いてしまうのかと思い、先程のスクリプトの後半を以下のように変更して
みました。
trap(:HUP){
puts "Accept HUP"
a.arg = "HUP"
}
th.join
puts "Finish"
これで、kill -HUPすると案の定
Accept HUP
Finish
と表示されて終了してしまいました。
Solarisにおけるこの挙動をうまく回避して、スレッドを止めない方法はあるでし
ょうか?
---- sakazuki(QZS01353@nifty.ne.jp)