大家好,又見面了,我是你們的朋友全棧君。 ioctl 是用來設定硬體控制寄存器,或者讀取硬體狀态寄存器的數值之類的。而read,write 是把資料丢入緩沖區,硬體的驅動從緩沖區讀取資料一個個發送或者把接收的資料送入緩沖區。
ioctl(keyFd, FIONREAD, &b)
得到緩沖區裡有多少位元組要被讀取,然後将位元組數放入b裡面。
接下來就可以用read了。
read(keyFd, &b, sizeof(b))
清單 – 讀取串行端口輸入緩沖區中的位元組數
#include <unistd.h>
#include <termios.h>
int fd;
int bytes;
ioctl(fd, FIONREAD, &bytes);
=================================
FIONREAD,就是傳回緩衝區有多少字節。
輸入有個輸入緩衝區,用
ioctl(0,FIONREAD,&nread);
能得到緩衝區裡面有多少字節要被讀取。值放在 nread裡面了。
然後就可以 read 了。nread = read(0,buffer,nread);
釋出者:全棧程式員棧長,轉載請注明出處:https://javaforall.cn/163626.html原文連結:https://javaforall.cn