ioctl操作列表

ioctl函数在Unix环境中被用于处理不适合归入其他类别的系统接口操作,如网络和终端控制。尽管Posix尝试用标准化函数替代,但ioctl在终端操作中仍广泛使用。通常需要包含<sys/ioctl.h>头文件,终端ioctl还需要<termios.h>。ioctl的主要用途包括终端控制等,具体操作可在man ioctl_list中找到。这个列出的ioctl操作列表有助于确定第三个参数的数据结构,对于终端操作的详细解释可以在《Unix网络编程》卷一中找到。
摘要由CSDN通过智能技术生成

  在传统上ioctl函数是用于哪些普遍使用,但不适合归入其他类别的任何特性的系统接口。Posix去掉了ioctl,它通过创建特殊的posix标准化的包裹函数来代替ioctl。但是仍然有许多网络方面的操作和终端操作等,仍然需要使用ioctl。ioctl中关于终端的操作最多。,其接口定义如下:

#include <sys/ioctl.h>

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

在这个定义中,显示的头文件只是ioctl函数本身所要求的头文件。通常,还要求其他相应操作的头文件,因为request的定义在不同的头文件中。例如,除Posix所说明的基本操作之外,终端ioctl都需要头文件<termios.h>。ioctl的主要用途如下表所示:

类型                  操作                头文件                            

盘标号              DIOxxx            <disklabel.h>

文件I/O            FIOxxx             <ioctl.h>

磁盘I/O            MTIOxxx          <mtio.h>

套接口I/O        SIOxxx             <ioctl.h>

终端I/O            TIOxxx             <ioctl.h>

上面这个表主要是参考《Unix环境高级编程》中的表,原文中是包括四列的,最后一列显示的是相应操作的数量,我删除这列是因为这个数量现在可能已经不太准确,而且知道数量也没有什么意义。下面会贴出来再man手册中ioctl_list中列出的一个比较完整的ioctl操作列表,列表中// I-O表示第三个参数是一个值-结果参数,// MORE表示需要不止一个参数或者会返回多个值,更加具体的可以通过man ioctl_list来查看。

ioctl 列表:

// Main table. 

// <include/asm-i386/socket.h> 
0x00008901 FIOSETOWN const int *
 
0x00008902 SIOCSPGRP const int *
 
0x00008903 FIOGETOWN int *
 
0x00008904 SIOCGPGRP int *
 
0x00008905 SIOCATMAR int *
 
0x00008906 SIOCGSTAMP timeval *
 


// <include/asm-i386/termios.h> 0x00005401 TCGETS struct termios * 
 
0x00005402 TCSETS const struct termios * 
 
0x00005403 TCSETSW const struct termios * 
 
0x00005404 TCSETSF const struct termios * 
 
0x00005405 TCGETA struct termio * 
 
0x00005406 TCSETA const struct termio * 
 
0x00005407 TCSETAW const struct termio * 
 
0x00005408 TCSETAF const struct termio * 
 
0x00005409 TCSBRK int 
 
0x0000540A TCXONC int 
 
0x0000540B TCFLSH int 
 
0x0000540C TIOCEXCL void 
 
0x0000540D TIOCNXCL void 
 
0x0000540E TIOCSCTTY int 
 
0x0000540F TIOCGPGRP pid_t * 
 
0x00005410 TIOCSPGRP const pid_t * 
 
0x00005411 TIOCOUTQ int * 
 
0x00005412 TIOCSTI const char * 
 
0x00005413 TIOCGWINSZ struct winsize * 
 
0x00005414 TIOCSWINSZ const struct winsize * 
 
0x00005415 TIOCMGET int * 
 
0x00005416 TIOCMBIS const int * 
 
0x00005417 TIOCMBIC const int * 
 
0x00005418 TIOCMSET const int * 
 
0x00005419 TIOCGSOFTCAR int * 
 
0x0000541A TIOCSSOFTCAR const int * 
 
0x0000541B FIONREAD int * 
 
0x0000541B TIOCINQ int * 
 
0x0000541C TIOCLINUX const char * // MORE
 
0x0000541D TIOCCONS void 
 
0x0000541E TIOCGSERIAL struct serial_struct * 
 
0x0000541F TIOCSSERIAL const struct serial_struct * 
 
0x00005420 TIOCPKT const int * 
 
0x00005421 FIONBIO const int * 
 
0x00005422 TIOCNOTTY void 
 
0x00005423 TIOCSETD const int * 
 
0x00005424 TIOCGETD int * 
 
0x00005425 TCSBRKP int 
 
0x00005426 TIOCTTYGSTRUCT struct tty_struct * 
 
0x00005450 FIONCLEX void 
 
0x00005451 FIOCLEX void 
 
0x00005452 FIOASYNC const int * 
 
0x00005453 TIOCSERCONFIG void 
 
0x00005454 TIOCSERGWILD int * 
 
0x00005455 TIOCSERSWILD const int * 
 
0x00005456 TIOCGLCKTRMIOS struct termios * 
 
0x00005457 TIOCSLCKTRMIOS const struct termios * 
 
0x00005458 TIOCSERGSTRUCT struct async_struct * 
 
0x00005459 TIOCSERGETLSR int * 
 
0x0000545A TIOCSERGETMULTI struct serial_multiport_struct * 
 
0x0000545B TIOCSERSETMULTI const struct serial_multiport_struct * 
 


// <include/linux/ax25.h> 0x000089E0 SIOCAX25GETUID const struct sockaddr_ax25 * 
 
0x000089E1 SIOCAX25ADDUID const struct sockaddr_ax25 * 
 
0x000089E2 SIOCAX25DELUID const struct sockaddr_ax25 * 
 
0x000089E3 SIOCAX25NOUID const int * 
 
0x000089E4 SIOCAX25DIGCTL const int * 
 
0x000089E5 SIOCAX25GETPARMS struct ax25_parms_struct * // I-O
 
0x000089E6 SIOCAX25SETPARMS const struct ax25_parms_struct * 
 


// <include/linux/cdk.h> 0x00007314 STL_BINTR void 
 
0x00007315 STL_BSTART void 
 
0x00007316 STL_BSTOP void 
 
0x00007317 STL_BRESET void 
 


// <in
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值