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() 函式。