7.73. V4L2 write()

7.73.1. 名称

v4l2-write - 写入 V4L2 设备

7.73.2. 概要

#include <unistd.h>
ssize_t write(int fd, void *buf, size_t count)

7.73.3. 参数

fd

open() 返回的文件描述符。

buf

包含要写入数据的缓冲区

count

缓冲区中的字节数

7.73.4. 描述

write() 从缓冲区 buf 开始,将最多 count 个字节写入文件描述符 fd 引用的设备。当硬件输出尚未激活时,此函数会启用它们。当 count 为零时,write() 返回 0,没有任何其他效果。

当应用程序未及时提供更多数据时,将再次显示之前的视频帧、原始 VBI 图像、分片 VPS 或 WSS 数据。分片图文电视或隐藏字幕数据不会重复,驱动程序会插入一个空白行来代替。

7.73.5. 返回值

成功时,返回写入的字节数。零表示未写入任何内容。 发生错误时,返回 -1,并适当设置 errno 变量。 在这种情况下,下一次写入将从新帧的开头开始。 可能的错误代码是

EAGAIN

已使用 O_NONBLOCK 标志选择了非阻塞 I/O,并且没有可用于立即写入数据的缓冲区空间。

EBADF

fd 不是有效的文件描述符,或者未打开以进行写入。

EBUSY

驱动程序不支持多个写入流,并且该设备已在使用中。

EFAULT

buf 引用了无法访问的内存区域。

EINTR

在写入任何数据之前,该调用被信号中断。

EIO

I/O 错误。 这表示某些硬件问题。

EINVAL

此驱动程序、此设备或通常此类型的设备不支持 write() 函数。