ioctl錯誤引出的open和fopen的區別

2021-07-03 06:27:33 字數 449 閱讀 5946

錯誤:ioctl返回負值,並且提示錯誤bad file descriptor

原因:錯誤的使用fopen函式代替open函式。

open和fopen的區別:

open 是系統呼叫 返回的是檔案控制代碼,檔案的控制代碼是檔案在檔案描述副表裡的索引,fopen是c的庫函式,返回的是乙個指向檔案結構的指標

一般用fopen開啟普通檔案,用open開啟裝置檔案

前者屬於低階io,後者是高階io。

前者返回乙個檔案描述符(使用者程式區的),後者返回乙個檔案指標。

前者無緩衝,後者有緩衝。

前者與 read, write 等配合使用, 後者與 fread, fwrite等配合使用。

後者是在前者的基礎上擴充而來的,在大多數情況下,用後者。

ioctl和unlock ioctl的區別

今天調乙個程式調了半天,發現應用程式的ioctl的cmd引數傳送到驅動程式的ioctl發生改變。而根據 linux裝置驅動 這個cmd應該是不變的。因為在kernel 2.6.36 中已經完全刪除了struct file operations 中的ioctl 函式指標,取而代之的是unlocked ...

open和fopen的區別

1.緩衝檔案系統 緩衝檔案系統的特點是 在記憶體開闢乙個 緩衝區 為程式中的每乙個檔案使用,當執行讀檔案的操作時,從磁碟檔案將資料先讀入記憶體 緩衝區 裝滿後再從記憶體 緩衝區 依此讀入接收的變數。執行寫檔案的操作時,先將資料寫入記憶體 緩衝區 待記憶體 緩衝區 裝滿後再寫入檔案。由此可以看出,記憶...

open和fopen的區別

open和fopen的區別 1.緩衝檔案系統 緩衝檔案系統的特點是 在記憶體開闢乙個 緩衝區 為程式中的每乙個檔案使用,當執行讀檔案的操作時,從磁碟檔案將資料先讀入記憶體 緩衝區 裝滿後再從記憶體 緩衝區 依此讀入接收的變數。執行寫檔案的操作時,先將資料寫入記憶體 緩衝區 待記憶體 緩衝區 裝滿後再...