ioctl() - Unix、Linux 系統呼叫 - 技術教學
Tutorials Point


  Unix 初學者指南
  Unix Shell 程式設計
  高階 Unix
  Unix 有用參考
  Unix 有用資源
  精選閱讀

版權所有 © 2014 tutorialspoint



  首頁     參考     討論論壇     關於TP  

ioctl() - Unix、Linux 系統呼叫


previous next AddThis Social Bookmark Button

廣告

名稱

ioctl - 控制裝置

語法

#include <sys/ioctl.h>

int ioctl(int d, int request, ...);

描述

ioctl() 函式操縱特殊檔案的底層裝置引數。特別是,可以使用 ioctl() 請求控制字元特殊檔案(例如終端)的許多操作特性。引數 d 必須是開啟的檔案描述符。

第二個引數是與裝置相關的請求程式碼。第三個引數是指向記憶體的無型別指標。它傳統上是 char *argp(在 void * 成為有效 C 語言之前),在本討論中將以此命名。

ioctl() request 中編碼了引數是 輸入 引數還是 輸出 引數,以及引數 argp 的大小(以位元組為單位)。用於指定 ioctl() request 的宏和定義位於檔案 <sys/ioctl.h> 中。

返回值

通常,成功時返回零。一些 ioctl() 請求使用返回值作為輸出引數,並在成功時返回非負值。發生錯誤時,返回 -1,並且 errno 被相應地設定。

錯誤

標籤描述
EBADF d 不是有效的描述符。
EFAULT argp 引用了不可訪問的記憶體區域。
EINVAL Requestargp 無效。
ENOTTY d 未與字元特殊裝置關聯。
ENOTTY 指定的請求不適用於描述符 d 引用的物件型別。

注意

為了使用此呼叫,需要一個開啟的檔案描述符。通常,open(2) 呼叫具有不需要的副作用,可以在 Linux 下透過為其提供 O_NONBLOCK 標誌來避免這些副作用。

符合標準

沒有單一的標準。ioctl(2) 的引數、返回值和語義根據所討論的裝置驅動程式而有所不同(此呼叫用作對不完全符合 Unix 流 I/O 模型的操作的通用處理方法)。有關許多已知 ioctl() 呼叫的列表,請參見 ioctl_list(2)。ioctl() 函式調用出現在 Version 7 AT&T Unix 中。

參見



previous next Printer Friendly

廣告


  

廣告



廣告