[perldocjp-cvs 330] CVS update: docs/perl/5.8.8

Zurück zum Archiv-Index

argra****@users***** argra****@users*****
2008年 12月 11日 (木) 00:37:06 JST


Index: docs/perl/5.8.8/perlipc.pod
diff -u docs/perl/5.8.8/perlipc.pod:1.3 docs/perl/5.8.8/perlipc.pod:1.4
--- docs/perl/5.8.8/perlipc.pod:1.3	Wed Dec 10 03:49:10 2008
+++ docs/perl/5.8.8/perlipc.pod	Thu Dec 11 00:37:06 2008
@@ -700,18 +700,20 @@
 
 =end original
 
-When a signal is delivered (e.g. INT control-C) the operating system
-breaks into IO operations like C<read> (used to implement Perls
-E<lt>E<gt> operator). On older Perls the handler was called
-immediately (and as C<read> is not "unsafe" this worked well). With
-the "deferred" scheme the handler is not called immediately, and if
-Perl is using system's C<stdio> library that library may re-start the
-C<read> without returning to Perl and giving it a chance to call the
-%SIG handler. If this happens on your system the solution is to use
-C<:perlio> layer to do IO - at least on those handles which you want
-to be able to break into with signals. (The C<:perlio> layer checks
-the signal flags and calls %SIG handlers before resuming IO operation.)
-(TBT)
+(INT control-C などで) シグナルが配送されると、
+OS は (Perl E<lt>E<gt> 演算子の実装で使われている) C<read> のような
+I/O 操作を中断します。
+古い Perl ではハンドラをすぐに呼び出します
+(そして C<read> はうまく動くので「安全ではない」ことはありません)。
+「保留」スキームではハンドラはすぐに呼び出されず、
+もし Perl がシステムの C<stdio> ライブラリを使っていると、ライブラリは
+Perl に返って %SIG ハンドラを呼び出しする機会なしに C<read> を
+再起動します。
+もしこれが起きた場合、解決法は、I/O を行うときにー
+- 少なくともシグナルで中断できるようにしたいハンドルで -
+C<:perlio> 層を使うことです 
+(C<:perlio> 層はシグナルフラグをチェックして、I/O 操作を続行する前に
+%SIG ハンドラを呼び出します。)
 
 =begin original
 
@@ -854,10 +856,8 @@
 C<wait> することを想定されているものもあります。
 このようなシステムでは保留シグナルスキームはこれらのシグナルでは
 動作しません(C<wait> しません)。
-Again the failure will
-look like a loop as the operating system will re-issue the signal as
-there are un-waited-for completed child processes.
-(TBT)
+再び、問題は、wait していない完了した子プロセスがあるかのようにシグナルが
+再び発生することでループのように見えます。
 
 =back
 
@@ -921,7 +921,7 @@
 =end original
 
 特定のプログラムの一つが @ARGV にあるファイル名を期待している
-Perl スクリプトであっていいのなら、賢いプログラマーは以下のように
+Perl スクリプトであっていいのなら、賢いプログラマは以下のように
 書くこともできます:
 
     % program f1 "cmd1|" - f2 "cmd2|" f3 < tmpfile
@@ -1396,17 +1396,16 @@
 
 =end original
 
-これに関る問題は、UNIX のバッファリングが実際にはある時点に至るまで
+これに関する問題は、UNIX のバッファリングが実際にはある時点に至るまで
 留まるということにあります。
 ファイルハンドル C<Writer> を自動フラッシュにしたとしても、もう一方の
-端点にあるプロセスは送られたデータを timley manner に従って
-受け取ることになるでしょう。
-一般的に云って、全てのことに関して即座に反応するように強制することは
-できません。
+端点にあるプロセスは送られたデータを適当なタイミングで
+受け取ることになります; 一般的に云って、全てのことに関して即座に
+反応するように強制することはできません。
 上記の例では、バッファリングをしないようにするために B<-u> フラグを
 I<cat> に与えることができたのでそれができました。
 パイプ越しに使われることを想定して設計された UNIX コマンドは非常に
-少数なので、この例のようなことは、dboule-ened パイプのもう一方の端点にある
+少数なので、この例のようなことは、両端のあるパイプのもう一方の端点にある
 プログラムを自分自身で書かない限りはほとんどできないのです。
 
 =begin original
@@ -2262,7 +2261,7 @@
 システムでなら C<"daytime"> を使うこともできました
 [FOOTNOTE: UNIXでは I</etc/services> にシステムサービスファイルがあります]。
 しかし、実際には括弧でくくって (13) というポート番号の指定を行っていました。
-単に番号を使っても同様に動作するのですが、定数は注意深いプログラマーを
+単に番号を使っても同様に動作するのですが、定数は注意深いプログラマを
 神経質にさせてしまいます。
 
 =back
@@ -3135,7 +3134,7 @@
 Richard Stevens による非常に重要な教科書
 I<Unix Network Programming, 2nd Edition, Volume 1>
 (Prentice-Hall から出版されています)があります。
-ネットワークに関するほとんどの本は、C プログラマーを対象としている点に
+ネットワークに関するほとんどの本は、C プログラマを対象としている点に
 注意してください。
 Perl への変換は、読者の宿題として残しておきます。
 


perldocjp-cvs メーリングリストの案内
Zurück zum Archiv-Index