ioctl的用法
来源:互联网 发布:网络电视机顶盒图片 编辑:程序博客网 时间:2024/06/06 09:33
最近在程序中看到这个关键字,此关键字主要是用在驱动某些模块当中,比如我要打开某个IO口,驱动里面的功能就要使用此函数;
函数原型
ioctl(Int fd,int cmd,void*args)
第一个参数主要是文件标识符。
第二个参数主要是一些命令,(比如打开某个功能,获取套接字,获取端口地址,获取IP地址)
主要命令包括
(此为复制){
类别
Request
说明
数据类型
套
接
口
SIOCATMARK
SIOCSPGRP
SIOCGPGRP
是否位于带外标记
设置套接口的进程ID 或进程组ID
获取套接口的进程ID 或进程组ID
int
int
int
文
件
FIONBIN
FIOASYNC
FIONREAD
FIOSETOWN
FIOGETOWN
设置/ 清除非阻塞I/O 标志
设置/ 清除信号驱动异步I/O 标志
获取接收缓存区中的字 节数
设置文件的进程ID 或进程组ID
获取文件的进程ID 或进程组ID
int
int
int
int
int
接
口
SIOCGIFCONF
SIOCSIFADDR
SIOCGIFADDR
SIOCSIFFLAGS
SIOCGIFFLAGS
SIOCSIFDSTADDR
SIOCGIFDSTADDR
SIOCGIFBRDADDR
SIOCSIFBRDADDR
SIOCGIFNETMASK
SIOCSIFNETMASK
SIOCGIFMETRIC
SIOCSIFMETRIC
SIOCGIFMTU
SIOCxxx
获取所有接口的清单
设置接口地址
获取接口地址
设置接口标志
获取接口标志
设置点到点地址
获取点到点地址
获取广播地址
设置广播地址
获取子网掩码
设置子网掩码
获取接口的测度
设置接口的测度
获取接口MTU
(还有很多取决于系统 的实现)
struct ifconf
struct ifreq
struct ifreq
struct ifreq
struct ifreq
struct ifreq
struct ifreq
struct ifreq
struct ifreq
struct ifreq
struct ifreq
struct ifreq
struct ifreq
struct ifreq
ARP
SIOCSARP
SIOCGARP
SIOCDARP
创建/ 修改ARP 表项
获取ARP 表项
删除ARP 表项
struct arpreq
struct arpreq
struct arpreq
路
由
SIOCADDRT
SIOCDELRT
增加路径
删除路径
struct rtentry
struct rtentry
流
I_xxx
套接 口操作:
明确用于套接口操作的ioctl 请求有三个, 它们都要求ioctl 的第三个参数是指向某个整数的一个指针。
SIOCATMARK: 如果本套接口的的度指针当前位于带外标记,那就通过由第三个参数指向的整数返回一个非0 值;否则返回一个0 值。POSIX 以函数sockatmark 替换本请求。
SIOCGPGRP : 通过第三个参数指向的整数返回本套接口的进程ID 或进程组ID ,该ID 指定针对本套接口的SIGIO 或SIGURG 信号的接收进程。本请求和fcntl 的F_GETOWN 命令等效,POSIX 标准化的是fcntl 函数。
SIOCSPGRP : 把本套接口的进程ID 或者进程组ID 设置成第三个参数指向的整数,该ID 指定针对本套接口的SIGIO 或SIGURG 信号的接收进程,本请求和fcntl 的F_SETOWN 命令等效,POSIX 标准化的是fcntl 操作。
文件操作:
以下5 个请求都要求ioctl 的第三个参数指向一个整数。
FIONBIO : 根据ioctl 的第三个参数指向一个0 或非0 值分别清除或设置本套接口的非阻塞标志。本请求和O_NONBLOCK 文件状态标志等效,而该标志通过fcntl 的F_SETFL 命令清除或设置。
FIOASYNC : 根据iocl 的第三个参数指向一个0 值或非0 值分别清除或设置针对本套接口的信号驱动异步I/O 标志,它决定是否收取针对本套接口的异步I/O 信号(SIGIO )。本请求和O_ASYNC 文件状态标志等效,而该标志可以通过fcntl 的F_SETFL 命令清除或设置。
FIONREAD : 通过由ioctl 的第三个参数指向的整数返回当前在本套接口接收缓冲区中的字节数。本特性同样适用于文件,管道和终端。
FIOSETOWN : 对于套接口和SIOCSPGRP 等效。
FIOGETOWN : 对于套接口和SIOCGPGRP 等效。
- ioctl的用法
- ioctl函数的基本用法
- ioctl()函数的用法、例子
- ioctl 用法(转)
- IOCTL函数用法
- IOCTL函数用法
- IOCTL函数用法
- ioctl用法详解
- IOCTL函数用法
- ioctl用法详解
- ioctl() 函数用法
- ioctl用法详解
- IOCTL函数用法
- ioctl用法详解
- IOCTL函数用法
- ioctl用法详解
- IOCTL函数用法详解
- unix网络编程——ioctl 函数的用法详解
- 权限设计,以及使用优秀的权限框架shiro整合SpringMVC
- 在WebView中如何让JS与Java安全地互相调用
- select的一些方法
- 绿麻雀、晓风、融都等网贷系统安全堪忧
- 操作系统——进程
- ioctl的用法
- 百度前端面试记录
- 安装websphere 错误提示:Unable to find supported browser
- 404 NOT FOUND!---设置404的作用
- iOS 判断网络类型
- layout 将在线安装制作成离线安装包
- 2015游戏蛮牛——蛮牛杯第四届开发者大赛 创见VR未来开启报名
- wireshark分析Socket断开
- Android Handler 源码笔记