OSI通信機能が提供するAPIは,同期型要求と非同期型要求の2種類があります。ここでいう要求とは,上位プログラムがデータの送受信などをするために,OSI通信機能のライブラリ関数を呼び出すことを意味しています。
OSI通信機能のライブラリ関数の呼び出し後,上位プログラムに制御が戻るのは,OSI通信機能側の処理がすべて完了した時点(例えば,送信データをすべて網側に出力した時点)です。
同期型要求の処理概要を図2-3に示します。
図2-3 同期型要求の処理概要
OSI通信機能のライブラリ関数の呼び出し後,すぐに上位プログラムに制御が戻ります。上位プログラムは,そこで何らかの処理ができます。上位プログラムは,OSI通信機能側の処理の完了をEVENTS関数で待ちます。さらに,処理結果を得るためにCHECK関数を発行します。
非同期型要求をする場合,その要求から完了事象取得までの一連の処理は同一プロセス内で行ってください。例えば,非同期関数発行後,fork,execを実行し,子プロセスで完了事象を取得することはできません。
AIX 5L V5.3以降を使用している場合は,ENABLE(獲得型)関数またはENABLE(受け入れ指示型)関数を発行したあとに,CHECK非同期動作オプション(O_OPT_EVTAGAIN)を指定したOPTION関数を発行してください。
EVENTS関数が「イベント有り」でリターンしても,CHECK関数が「処理未完了(errno=EAGAIN)」となる場合があります。この場合は,処理結果が得られるまでEVENTS関数およびCHECK関数を発行してください。
非同期型要求の処理概要を図2-4に示します。
図2-4 非同期型要求の処理概要