通信管理 XNF/AS プログラマーズガイド HSC編

[目次][用語][索引][前へ][次へ]

3.14 BT_SELECT( )

<この節の構成>
(1) 名称
(2) 形式
(3) 機能
(4) リターン情報
(5) 特記事項

(1) 名称

 
BT_SELECT( )
 

非同期方式の関数の完了を監視します。

(2) 形式

#include <sys/types.h>
#include <sys/time.h>
#include <dlicom/bsc.h>
int  BT_SELECT(nfds,readfds,writefds,exceptfds,timeout);
int  nfds;
fd_set  *readfds,*writefds,*exceptfds;
struct  timeval  *timeout;

(3) 機能

非同期方式で要求したライブラリ関数の完了を監視します。

nfdsには,監視するファイル記述子セットの範囲を指定します。0からnfds-1までの記述子が調べられます。

readfdsには,監視するファイル記述子に対するビットをONにしたファイル記述子セット(8個のlong型)へのポインタを指定します。ファイル記述子=nで事象が発生しているかどうかを監視する場合は,2nビットをONにします。

[図データ]

nの最大値は256(=8×32)ですが,実際は一つのプロセスで同時にオープンできるファイル数の上限(OSの仕様)に制限されます。

writefdsとexceptfdsは予備です(0を設定してください)。

timeoutには,非同期事象が発生していないときに,sleepする時間を設定したtimeval構造体へのポインタを指定します。

struct  timeval {
      long  tv_sec;   /*  秒         */
      long  tv_usec;  /*  マイクロ秒 */
};

tv_secを0にすれば,sleepしないですぐリターンします。timeoutをNULLポインタにすれば,非同期事象が発生するまでsleepします。

詳細については,AIXマニュアルのselectシステムコールを参照してください。

(4) リターン情報

(a) リターン値

正の整数:
完了している非同期事象の数を返します。
完了したファイル記述子に対するビットをONにして,記述子セットを返します。

0:
完了している非同期事象はありません。

-1:
異常終了(詳細エラー情報がerrnoに設定されています)
(b) 詳細エラー情報

AIXマニュアルのselectシステムコールを参照してください。

(5) 特記事項