SELECT_TUT から:
「...複数のファイル記述子を効率的に監視し、それらのいずれかが「準備完了」であるかどうかを確認するために使用されます。つまり、I / Oが可能になるかどうか、または「例外的な状態」が発生したかどうかを確認します記述子の... ...
では、select() のポイントは何ですか? 好きなときに記述子を読み書きすることはできませんか? select() のポイントは、複数の記述子を同時に監視し、アクティビティがない場合にプロセスを適切にスリープ状態にすることです。Unix プログラマーは、データ フローが断続的な複数のファイル記述子からの I/O を処理しなければならない状況に陥ることがよくあります。read(2) および write(2) 呼び出しのシーケンスを作成するだけの場合、呼び出しの 1 つがファイル記述子から/へのデータの待機をブロックする可能性があり、別のファイル記述子は I /O. select() はこの状況に効率的に対処します。」
誰かが私に、これが何を意味し、これがどのように機能するかを説明してもらえますか?
たとえば、ここではファイル ハンドルが 1 つだけ選択されていますが、なぜ監視が必要なのでしょうか?
my $timeout = 10;
my ( $in, $out ) = ( '', '' );
vec( $in, fileno( STDIN ), 1 ) = 1;
select( $out = $in, undef, undef, $timeout );