3.9 d_rcv( )

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

(1) 名称

d_rcv( )

データを受信します。

(2) 形式

#include <xnfs/diuser.h>
int d_rcv(fd,buf,nbytes,flags);
int fd;
char *buf;
unsigned nbytes;
int *flags;

(3) 機能

ユーザデータを受信します。同期方式の場合は,データが到着するのを待ってリターンします。非同期方式の場合は,データが到着していなければ異常終了し,エラー情報としてDNODATAを設定します。

fd
データリンク端点識別子を指定します。
buf
受信したデータを格納するバッファ(受信バッファ)のアドレスを指定します。
nbytes
受信バッファのサイズを指定します。
flags
オプションのフラグD_MOREが設定されるフラグ領域のアドレスを指定します。リターンした場合に,このフラグが設定されたときは,その時点でデータが終了していないため,再度d_rcv( )を発行してデータの続きを受信する必要があることを示します。また,このフラグがクリアされることでデータの終了を示します。

(4) リターン情報

(a) リターン値

正常終了時:受信バイト数を返します。

異常終了時:-1を返します。

(b) エラー情報
エラー名称要因
DOUTSTATE6この関数が間違った順序で発行されました。
DSYSERR8この関数の実行中にシステムエラーが発生しました。詳細については,「3.16.1 詳細エラーコード」を参照してください。
DLOOK9データリンク端点上でイベントが発生しました。ライブラリ関数 d_look( )による確認が必要です。
DNODATA13受信できるデータがありません(非同期方式の場合)。

(5) 注意事項

受信バッファにデータが溜まり過ぎると,バッファがビジー状態となるため,一定の間隔でd_rcv( )を発行することをお勧めします。なお,このような例については,「図4-7 同期方式でのデータの受信(ビジー状態になった場合)」を参照してください。非同期方式の場合でも運用方法は同じです。