ioctl 時常常跟 read, write 混淆

2021-08-09 20:37:59 字數 969 閱讀 6123

在學習ioctl 時常常跟 read, write 混淆。其實 ioctl 是用來設定硬體控制暫存器,或者讀取硬體狀態暫存器的數值之類的。

而read,write 是把資料丟入緩衝區,硬體的驅動從緩衝區讀取資料乙個個傳送或者把接收的資料送入緩衝區。

ioctl(keyfd, fionread, &b)

得到緩衝區裡有多少位元組要被讀取,然後將位元組數放入b裡面。

接下來就可以用read了。

read(keyfd, &b, sizeof(b))

這兩個可以用在按鍵控制上,先是檢測按鍵是否被按下,如果被按下就放在b裡,然後user 在讀取按鍵對應數值。

listing - getting the number of bytes in the input buffer. 

清單 - 讀取串列埠輸入緩衝區中的位元組數 

#include

#include

int fd; 

int bytes; 

ioctl(fd, fionread, &bytes);

eg:

#include

#include

#include

#include

int kbhit()

return i;

}

main()

}

system("stty cooked echo" );

return 0;

}

ioctl相關知識

一 什麼是ioctl ioctl是裝置驅動程式中對裝置的i o通道進行管理的函式。所謂對i o通道進行管理,就是對裝置的一些特性進行控制,例如串列埠的傳輸波特率 馬達的轉速等等。它的呼叫個數如下 int ioctl int fd,ind cmd,其中fd就是使用者程式開啟裝置時使用open函式返回的...

ioctl初步理解

ioctl系統呼叫是為使用者空間建立的一種控制硬體裝置的通道。比如控制串列埠的波特率,馬達的轉速等等。是使用者空間和核心空間進行通訊的方式之一。要實現乙個ioctl,需要使用者空間和核心空間兩方面的配合。如果想要乙個硬體支援ioctl,則要在其驅動函式中加入ioctl的實現,應用程式想要通過ioct...

ioctl相關知識

略有修改 一 什麼是ioctl ioctl是裝置驅動程式中對裝置的i o通道進行管理的函式。所謂對i o通道進行管理,就是對裝置的一些特性進行控制,例如串列埠的傳輸波特率 馬達的轉速等等。它的呼叫個數如下 int ioctl int fd,ind cmd,其中fd就是使用者程式開啟裝置時使用open...