標準
標準/拡張機能 |
C/C++ |
依存項目 |
XPG4.2 |
両方 |
|
形式
#define _XOPEN_SOURCE_EXTENDED 1
#include <xti.h>
int t_look(int fd);
機能説明
fd によって指定されたトランスポート終点に
現行イベントを戻します。この関数によって、トランスポート提供者は、ユーザーが
同期モードで関数を呼び出しているときに、非同期イベントについて
トランスポート・ユーザーに通知できます。特定のイベントはユーザーの即時通知を必要とし、実行される現行の関数または次の関数で
特定のエラー、TLOOK によって指示されます。また、この関数によって、トランスポート・ユーザーは、非同期イベントに対して定期的にトランスポート終点をポーリング
できます。
イベントを処理するための追加機能は、選択とポーリングを
介して提供されます。
有効状態: すべて。ただし T_UNINIT を除く。
次のリストでは、XTI 呼び出しが
TLOOK エラーと
一緒に戻る原因になる非同期イベントについて説明します。
- t_accept()
- T_DISCONNECT、T_LISTEN
- t_connect()
- T_DISCONNECT、T_LISTEN
これが起こるのは、qlen > 0 でバインドされていて、接続指示が保留している終点で t_connect が行われるときのみです。
- t_listen()
- T_DISCONNECT
このイベントは、未解決の接続指示での切断を指示します。
- t_rcv()
- T_DISCONNECT
これが起こるのは、すべての保留データが読み取られてしまった
ときのみです。
- t_rcvconnect()
- T_DISCONNECT
- t_rcvudata()
- T_UDERR
- t_snd()
- T_DISCONNECT
- t_sndudata()
- T_UDERR
- t_unbind()
- T_LISTEN、T_DATA
T_DATA は、コネクションレス型の場合だけ起こることがあります。
- t_snddis()
- T_DISCONNECT
TLOOK エラーが XTI 関数を使用してトランスポート終点で受信された場合には、同じ
TLOOK エラーが適用されるその XTI 関数と他の XTI 関数に対する以降の呼び出しは、イベントが使い尽くされるまで
TLOOK を戻し続けます。
TLOOK エラーの原因になるイベントは、t_look() を
呼び出して判別でき、その後で
表 1 に定義されて
いる対応の消費 XTI 関数を呼び出して消費できます。
表 1. イベントと t_look()イベント |
t_look() でクリア
されましたか? |
消費 XTI 関数 |
T_LISTEN |
いいえ |
t_listen() |
T_CONNECT |
いいえ |
t_{rcv}connect() t_connect() 関数の場合には、T_CONNECT イベントは、関数の実行によって生成されたり消費されたりするので、アプリケーションでは確認で
きません。
|
T_DATA |
いいえ |
t_rcv() |
T_EXDATA |
いいえ |
t_rcv() |
T_DISCONNECT |
いいえ |
t_rcvdis() |
T_GODATA |
はい |
t_snd() |
T_GOEXDATA |
はい |
t_snd() |
戻り値
正常に実行された場合、t_look() は、許容可能なイベントのどれが起こったかを指示する値を戻し、イベントが存在しない場合には 0 を戻します。次のイベントのいずれかが戻されます。
- T_CONNECT
- 接続確認が受信されました。
- T_DATA
- 標準データが受信されました。
- T_DISCONNECT
- 切断が受信されました。
- T_EXDATA
- 優先データが受信されました。
- T_GODATA
- TFLOW エラーの原因になった標準データ・フローに関するフロー制御制約事項が除去されました。標準データを再度送信できます。
- T_GOEXDATA
- TFLOW エラーの原因になった優先データ・フローに関するフロー制御制約事項が除去されました。優先データを再度送信できます。
- T_LISTEN
- 接続指示が受信されました。
正常に実行されなかった場合、t_look() は -1 を戻して、errno を次のいずれかの値に設定します。
- エラー・コード
- 説明
- TBADF
- 指定されたファイル記述子は、トランスポート終点を
指していません。
- TPROTO
- このエラーは、XTI と他に適切な XTI (t_errno) が
ないトランスポート提供者の間で通信問題が検出されたことを
示しています。
- TSYSERR
- この関数の実行時に、システム・エラーが発生しました。