Linux下開發-fcntl和ioctl的區別
fcntl函式可以改變一個已開啟的檔案的屬性,可以重新設定讀、寫、追加、非阻塞等標誌(這些標誌稱為File
Status Flag),而不必重新open檔案。
通過fcntl設定的都是當前程式如何訪問裝置或檔案的訪問控制屬性,例如讀、寫、追加、非阻塞、加鎖等,但並不設定檔案或裝置本身的屬性,例如檔案的讀寫許可權、串列埠波特率等。
int fcntl(int fd, int cmd);
int fcntl(int fd, int cmd, long arg);
int fcntl(int fd, int cmd, struct flock *lock);
int fcntl(int fd, int cmd, long arg);
int fcntl(int fd, int cmd, struct flock *lock);
ioctl函式用於設定某些裝置本身的屬性,例如串列埠波特率、終端視窗大小,注意區分這兩個函式的作用。
ioctl用於向裝置發控制和配置命令,有些命令也需要讀寫一些資料,但這些資料是不能用read/write讀寫的,稱為Out-of-band資料。也就是說,read/write讀寫的資料是in-band資料,是I/O操作的主體,而ioctl命令傳送的是控制資訊,其中的資料是輔助的資料。例如,在串列埠線上收發資料通過ead/write操作,而串列埠的波特率、校驗位、停止位通過ioctl設定,A/D轉換的結果通過read讀取,而A/D轉換精度和工作頻率通過ioctl設定。
ioctl用於向裝置發控制和配置命令,有些命令也需要讀寫一些資料,但這些資料是不能用read/write讀寫的,稱為Out-of-band資料。也就是說,read/write讀寫的資料是in-band資料,是I/O操作的主體,而ioctl命令傳送的是控制資訊,其中的資料是輔助的資料。例如,在串列埠線上收發資料通過ead/write操作,而串列埠的波特率、校驗位、停止位通過ioctl設定,A/D轉換的結果通過read讀取,而A/D轉換精度和工作頻率通過ioctl設定。
int ioctl(int d, int request, ...);
相關文章
- Linux 中 fcntl()、lockf、flock 的區別Linux
- 會開發和懂開發的區別
- 瀑布式開發和敏捷開發的區別敏捷
- Java開發和Android開發的區別JavaAndroid
- 開發APP和開發微信小程式的區別?APP微信小程式
- 原生開發、H5開發和混合開發的區別H5
- socket在windows下和linux下的區別的網路文摘WindowsLinux
- UI設計和前端開發的區別UI前端
- springboot和ssm開發的區別Spring BootSSM
- Linux中“>”和“>>”的區別Linux
- web 開發裡 SSR,CSR 和 SSG 的區別Web
- 移動前端開發和 Web 前端開發的區別是什麼?前端Web
- Linux 驅動之IoctlLinux
- JavaWeb開發Servlet之getParameter和getAttribute的區別,JavaWebServlet
- linux的sleep()和usleep()的使用和區別Linux
- Frontend開發和UI有什麼區別?UI
- Web前端開發和後端開發有什麼區別?Web前端後端
- linux和windows系統的區別LinuxWindows
- Linux 命令 su 和 sudo 的區別Linux
- 認清Python下==和is的區別Python
- Android 開發中 getContext 和 getActivity的區別AndroidContext
- 敏捷開發和傳統開發的區別?以及敏捷開發管理工具的推薦敏捷
- 低程式碼開發和零程式碼開發有哪些區別
- 轉發和重定向的區別?
- 在Linux中,開源軟體和自由軟體的區別?Linux
- 【轉】linux下命令su與su - 的區別。Linux
- Linux下開發-dup和dup2Linux
- Android核心和Linux核心的區別AndroidLinux
- 5個macOS 和 Linux的主要區別MacLinux
- 程式和執行緒的區別(Linux)執行緒Linux
- Linux和Ubuntu的區別與聯絡LinuxUbuntu
- Linux su命令和sudo命令的區別Linux
- Linux prerouting和postrouting的區別Linux
- Linux和DOS的FORMAT命令區別(轉)LinuxORM
- opencv和Python的區別是什麼?Python開發!OpenCVPython
- 關於企業級應用和web開發的區別Web
- Linux下which、whereis、locate、find區別Linux
- Linux時間的cst和edt的區別Linux