11.7.2 TPEBLOCKおよびTPGOTSIGエラー

TPEBLOCKおよびTPGOTSIGエラー・コードは、メッセージのリクエスト側に返される場合も応答側に返される場合もあるので、すべての通信呼出しに対して返される可能性があります。

ブロッキング状態が発生している場合に、リクエストを同期または非同期に送信するプロセスでブロッキング状態を無視するようにflagsパラメータにTPPNOBLOCKが設定されていると、システムはTPEBLOCKを返します。たとえば、システムのキューがすべていっぱいになっている場合、リクエストが送信されるとブロッキング状態になります。

tpcall()がブロッキング状態を示していない場合は、通信の送信部分だけに影響します。リクエストの送信に成功すると、その呼出しが応答を待っている間にブロッキング状態が存在したとしても、TPEBLOCKは返されません。

flagsTPNOBLOCKを設定して呼出しを行った場合、tpgetrply()が応答を待っている間にブロッキング状態が発生すると、tpgetrply()TPEBLOCKが返されます。この状況は、メッセージがその時点で使用できない場合などに発生します。

TPGOTSIGエラーは、シグナルによってシステム・コールに割込みが発生したことを示します。このような状況は、実際にはエラーではありません。通信用の関数でflagsパラメータにTPSIGRSTRTが設定されていると、呼出しは失敗せず、tperrno(5)TPGOTSIGエラー・コードは返されません。