---
name: "vrb_read_min"
section: "3"
platform: "linux"
package: "libvrb0-dev"
version: "0.5.1-5.1"
release: "Debian 7 (Wheezy)"
platforms: ["linux"]
url: "https://new.carta.tech/vrb_read_min"
---

# vrb\_read\_min(3)

read a minimum of data into a VRB

## NAME

vrb\_read\_min - read a minimum of data into a VRB

## LIBRARY

**-lvrb**

## SYNOPSIS

**#include \<vrb.h\>**

*size\_t* **vrb\_read\_min***(vrb\_p* **vrb***, int* **fd***, size\_t* **maxsize***, size\_t* **minsize***);*

## DESCRIPTION

**vrb\_read\_min** reads a minimum amount of data from a specified open file descriptor using **[read(2)](/read/2.md)** into the specified virtual ring buffer until the specified maximum length has been read, the buffer is full, or end-of-file, or an error is returned (including EAGAIN or EWOULDBLOCK for a non-blocking descriptor). If there is insufficient space in the buffer to read the minimum amount, then **[read(2)](/read/2.md)** will not be called.

## ARGUMENTS

*vrb\_p* **vrb**\
 specifies which virtual ring buffer.

*int* **fd**\
 specifies the open file descriptor to read from

*size\_t* **maxsize**\
 specifies the maximum length to read, or **~0** for unlimited.

*size\_t* **minsize**\
 specifies the minimum length to read.

## RETURN VALUE

*size\_t*\
 If successful, the actual length of data read into the buffer is returned. If the minimum amount of space was not available to read into, 0 is returned. If end-of-file occurs, the return value is ~0 and errno is 0. If an error occurs from **[read(2)](/read/2.md),** the return value is ~0 and errno is set by **[read(2)](/read/2.md).**

## ERRORS

If an error is returned, then *errno* will have one of the following values:

- **0**

  An end-of-file has occurred. Note that this is a different way of returning an end-of-file condition than **[read(2)](/read/2.md)** uses.

- **EINVAL**

  An invalid virtual ring buffer pointer was specified.

## SEE ALSO

[**vrb**(3)](/vrb/3.md), [**vrb\_capacity**(3)](/vrb_capacity/3.md), [**vrb\_data\_len**(3)](/vrb_data_len/3.md), [**vrb\_data\_ptr**(3)](/vrb_data_ptr/3.md), [**vrb\_destroy**(3)](/vrb_destroy/3.md), [**vrb\_get**(3)](/vrb_get/3.md), [**vrb\_get\_min**(3)](/vrb_get_min/3.md), [**vrb\_give**(3)](/vrb_give/3.md), [**vrb\_init**(3)](/vrb_init/3.md), [**vrb\_init\_opt**(3)](/vrb_init_opt/3.md), [**vrb\_is\_empty**(3)](/vrb_is_empty/3.md), [**vrb\_is\_full**(3)](/vrb_is_full/3.md), [**vrb\_is\_not\_empty**(3)](/vrb_is_not_empty/3.md), [**vrb\_is\_not\_full**(3)](/vrb_is_not_full/3.md), [**vrb\_move**(3)](/vrb_move/3.md), [**vrb\_new**(3)](/vrb_new/3.md), [**vrb\_new\_opt**(3)](/vrb_new_opt/3.md), [**vrb\_put**(3)](/vrb_put/3.md), [**vrb\_put\_all**(3)](/vrb_put_all/3.md), [**vrb\_read**(3)](/vrb_read/3.md), [**vrb\_resize**(3)](/vrb_resize/3.md), [**vrb\_space\_len**(3)](/vrb_space_len/3.md), [**vrb\_space\_ptr**(3)](/vrb_space_ptr/3.md), [**vrb\_take**(3)](/vrb_take/3.md), [**vrb\_uninit**(3)](/vrb_uninit/3.md), [**vrb\_write**(3)](/vrb_write/3.md), [**vrb\_write\_min**(3)](/vrb_write_min/3.md), **[read(2)](/read/2.md)**
