

|
|
HOME >> アルファベットで関数を検索 >> select
select [ファイル記述子のステータスをチェックする]
[関数の使い方・書式]
○ = select ☆, ★, □, ■
| ☆: |
(スカラー) |
読み取り可能かチェックするファイル記述子集合のビットマスクをセットしたスカラー変数。ない場合は undef をセット。 |
| ★: |
(スカラー) |
書込み可能かチェックするファイル記述子集合のビットマスクをセットしたスカラー変数。ない場合は undef をセット。 |
| □: |
(スカラー) |
例外状態かチェックするファイル記述子集合のビットマスクをセットしたスカラー変数。ない場合は undef をセット。 |
| ■: |
(スカラー) |
タイムアウトする時間。
・・・ 秒数(小数設定可)。0だとボーリングする。 |
| ○: |
(スカラー) |
チェックした数。 |
|
(リスト) |
チェックした数、残り時間。 |
[関数の機能]
select では、ソケットハンドルやファイルハンドルを監視して、1つ以上のハンドルがアクティブになるまで待ちます。
指定したビットマスク☆と★、□で select システムコールを実行します。
各引数にセットされたスカラー変数にステータスが戻されます。
select システムコールは通常、多重化入出力の実行の為に使用されます。
例えば、複数の端末からの入力を処理しながら並行して出力も処理するという場合、
端末をポーリングして、読み取り可能な文字が発生した時点でその文字を読み取り、
出力可能になった時点で端末に出力を行なうという処理が、各ファイル記述子のステータスをチェックすることで可能になります。
□のタイムアウトする時間に■に undef をセットすると、チェック対象のファイル記述子のいずれかが操作可能になるまでブロックされます。
戻り値の残り時間は、システムによってはセットしたタイムアウト時間がそのまま戻ることがあります。
細かい時間を設定してプロセスをスリープさせる用途にも用いられます。その場合には、各ビットマスクに undef をセットします。
[書式の例]
($n, $timeleft) = select($rbits, $wbits, $ebits, $timeout);
サンプルソース
● 読み取り可能になるまでブロックする
$n = select($rbits, undef, undef, undef);
● 1.75秒スリープする
select undef, undef, undef, 1.75;
|