最复杂的函数.docx
《最复杂的函数.docx》由会员分享,可在线阅读,更多相关《最复杂的函数.docx(7页珍藏版)》请在冰豆网上搜索。
最复杂的函数
最复杂的函数
本函数影响由
fd
参数引用的一个打开的文件。
第三个参数总是一个指针,但指针的类型依赖于
request
参数。
#include<unistd.h>
intioctl(intfd,intrequest,.../*void*arg*/);
返回
0
:
成功
-1
:
出错我们可以把和网络相关的请求划分为
6
类:
套接口操作
文件操作
接口操作
ARP
高速缓存操作
路由表操作
流系统
下表列出了网络相关
ioctl
请求的
request
参
数以及
arg
地址必须指向的数据类型:
类别
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
(还有很多取决于系统的实现)
structifconf
structifreq
structifreq
structifreq
structifreq
structifreq
structifreq
structifreq
structifreq
structifreq
structifreq
structifreq
structifreq
structifreq
ARPSIOCSARP
SIOCGARP
SIOCDARP
创建
/
修改
ARP
表
项
获取
ARP
表项
删除
ARP
表项
structarpreq
structarpreq
structarpreq路
由SIOCADDRT
SIOCDELRT
增加路径
删除路径
structrtentry
structrtentry流I_xxx