3.2.3. 数字电视解复用 read()

3.2.3.1. 名称

数字电视解复用 read()

3.2.3.2. 概要

size_t read(int fd, void *buf, size_t count)

3.2.3.3. 参数

fd

先前调用 open() 返回的文件描述符。

buf

要填充的缓冲区

count

要读取的最大字节数

3.2.3.4. 描述

此系统调用返回已过滤的数据,可能是节数据或打包基本流 (PES) 数据。过滤后的数据从驱动程序的内部循环缓冲区传输到 buf。要传输的最大数据量由 count 暗示。

注意

如果使用设置了 DMX_CHECK_CRC 标志创建节过滤器,则 CRC 校验失败的数据将被静默忽略。

3.2.3.5. 返回值

成功时返回 0。

发生错误时返回 -1,并相应地设置 errno 变量。

EWOULDBLOCK

没有数据返回且指定了 O_NONBLOCK

EOVERFLOW

未及时从缓冲区读取过滤的数据,导致未读取的数据丢失。缓冲区被刷新。

ETIMEDOUT

未在规定的超时时间内加载该节。 有关如何设置超时,请参阅 ioctl DMX_SET_FILTER

EFAULT

由于 *buf 指针无效,驱动程序无法写入调用者的缓冲区。

通用错误代码在 通用错误代码 章节中进行了描述。