11.7.2 TPEBLOCKおよびTPGOTSIGエラー
TPEBLOCK
およびTPGOTSIG
エラー・コードは、メッセージのリクエスト側に返される場合も応答側に返される場合もあるので、すべての通信呼出しに対して返される可能性があります。
ブロッキング状態が発生している場合に、リクエストを同期または非同期に送信するプロセスでブロッキング状態を無視するようにflags
パラメータにTPPNOBLOCK
が設定されていると、システムはTPEBLOCK
を返します。たとえば、システムのキューがすべていっぱいになっている場合、リクエストが送信されるとブロッキング状態になります。
tpcall()
がブロッキング状態を示していない場合は、通信の送信部分だけに影響します。リクエストの送信に成功すると、その呼出しが応答を待っている間にブロッキング状態が存在したとしても、TPEBLOCK
は返されません。
flags
にTPNOBLOCK
を設定して呼出しを行った場合、tpgetrply()
が応答を待っている間にブロッキング状態が発生すると、tpgetrply()
にTPEBLOCK
が返されます。この状況は、メッセージがその時点で使用できない場合などに発生します。
TPGOTSIG
エラーは、シグナルによってシステム・コールに割込みが発生したことを示します。このような状況は、実際にはエラーではありません。通信用の関数でflags
パラメータにTPSIGRSTRT
が設定されていると、呼出しは失敗せず、tperrno(5)
にTPGOTSIG
エラー・コードは返されません。
親トピック: 一般的な通信呼出しのエラー