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

广告


  

广告



广告