ioctl函數(shù)用于系統(tǒng)調(diào)用操作特殊文件的底層設(shè)備參數(shù)。例如終端的許多操作特性可以用ioctl()請求來控制。不能用于read()、write()、open()、close()函數(shù)表示的I/O操作通常都能用ioctl表示。
fd參數(shù)為某個設(shè)備或文件已打開的文件描述符;
request參數(shù)指定了將在fd上執(zhí)行的控制操作。具體設(shè)備的頭文件定義了可傳遞給request參數(shù)的常量;
ioctl()調(diào)用的第三個參數(shù)采用了標(biāo)準(zhǔn)C語言的省略符號(...)來表示(稱之為argp),可以是任意數(shù)據(jù)類型。ioctl()根據(jù)request的參數(shù)值來確定argp所期望的類型。通常情況下,argp是指向整數(shù)或結(jié)構(gòu)的指針,有些情況下,不需要使用?argp;
具體的ioctl操作類型和參數(shù)取決于所使用的設(shè)備和驅(qū)動程序。每個設(shè)備和驅(qū)動程序都可能定義自己的一組特定的ioctl操作,使用ioctl需要參考相關(guān)設(shè)備或驅(qū)動程序的文檔或頭文件以了解具體的操作類型和參數(shù);