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() 将最多 count 个字节从位于 buf 的缓冲区写入到由文件描述符 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() 函数。