cc [ flag ... ] file ... -lnsl [ library ... ]
int t_rcv(int fildes, char *buf, unsigned nbytes, int *flags);
MT-Safe
By default, t_rcv() operates in synchronous mode and will wait for data to arrive if none is currently available. However, if O_NDELAY or O_NONBLOCK is set (using t_open(3N) or fcntl(2) ), t_rcv() will execute in asynchronous mode and will fail if no data is available. (See TNODATA below.)
On return from the call, if T_MORE is set in flags, this indicates that there is more data and the current transport service data unit (TSDU ) or expedited transport service data unit (ETSDU ) must be received in multiple t_rcv() calls. Each t_rcv() with the T_MORE flag set indicates that another t_rcv() must follow to get more data for the current TSDU . The end of the TSDU is identified by the return of a t_rcv() call with the T_MORE flag not set. If the transport provider does not support the concept of a TSDU as indicated in the info argument on return from t_open(3N) or t_getinfo(3N) , the T_MORE flag is not meaningful and should be ignored.
On return, the data returned is expedited data if T_EXPEDITED is set in flags. If the number of bytes of expedited data exceeds nbytes, t_rcv() will set T_EXPEDITED and T_MORE on return from the initial call. Subsequent calls to retrieve the remaining ETSDU will have T_EXPEDITED set on return. The end of the ETSDU is identified by the return of a t_rcv() call with the T_MORE flag not set.
If expedited data arrives after part of a ETSDU has been retrieved, receipt of the remainder of the TSDU will be suspended until the ETSDU has been processed. Only after the full ETSDU has been retrieved (T_MORE not set) will the remainder of the TSDU be available to the user.
On failure, t_errno will be set to one of the following: