欢迎来到天天文库
浏览记录
ID:48315122
大小:55.00 KB
页数:5页
时间:2020-01-13
《ioctl函数详细jieshao )》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、ioctl函数详细说明ioctl函数 本函数影响由fd参数引用的一个打开的文件。 #includeintioctl(intfd,intrequest,.../*void*arg*/);返回0:成功 -1:出错 第三个参数总是一个指针,但指针的类型依赖于request参数。我们可以把和网络相关的请求划分为6类:套接口操作文件操作接口操作ARP高速缓存操作路由表操作流系统下表列出了网络相关ioctl请求的request参数以及arg地址必须指向的数据类型: 类别Request说明数据类型套接口SIOCATMARKSIOCS
2、PGRPSIOCGPGRP是否位于带外标记设置套接口的进程ID或进程组ID获取套接口的进程ID或进程组IDintintint 文 件 FIONBINFIOASYNCFIONREADFIOSETOWNFIOGETOWN 设置/清除非阻塞I/O标志设置/清除信号驱动异步I/O标志获取接收缓存区中的字节数设置文件的进程ID或进程组ID获取文件的进程ID或进程组IDintintintintint SIOCGIFCONFSIOCSIFADDRSIOCGIFADDRSIOCSIFFLAGS获取所有接口的清单设置接口地址获取接口地址设置接口标志st
3、ructifconfstructifreqstructifreqstructifreq接口 SIOCGIFFLAGSSIOCSIFDSTADDRSIOCGIFDSTADDRSIOCGIFBRDADDRSIOCSIFBRDADDRSIOCGIFNETMASKSIOCSIFNETMASKSIOCGIFMETRICSIOCSIFMETRICSIOCGIFMTUSIOCxxx获取接口标志设置点到点地址获取点到点地址获取广播地址设置广播地址获取子网掩码设置子网掩码获取接口的测度设置接口的测度获取接口MTU(还有很多取决于系统的实现)s
4、tructifreqstructifreqstructifreqstructifreqstructifreqstructifreqstructifreqstructifreqstructifreqstructifreq ARPSIOCSARPSIOCGARPSIOCDARP创建/修改ARP表项获取ARP表项删除ARP表项structarpreqstructarpreqstructarpreq路由SIOCADDRTSIOCDELRT增加路径删除路径structrtentrystructrtentry流I_xxx 套接口操作:明确用于套接口
5、操作的ioctl请求有三个,它们都要求ioctl的第三个参数是指向某个整数的一个指针。 SIOCATMARK: 如果本套接口的的度指针当前位于带外标记,那就通过由第三个参数指向的整数返回一个非0值;否则返回一个0值。POSIX以函数sockatmark替换本请求。SIOCGPGRP: 通过第三个参数指向的整数返回本套接口的进程ID或进程组ID,该ID指定针对本套接口的SIGIO或SIGURG信号的接收进程。本请求和fcntl的F_GETOWN命令等效,POSIX标准化的是fcntl函数。SIOCSPGRP: 把本套接口的进
6、程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值分
7、别清除或设置针对本套接口的信号驱动异步I/O标志,它决定是否收取针对本套接口的异步I/O信号(SIGIO)。本请求和O_ASYNC文件状态标志等效,而该标志可以通过fcntl的F_SETFL命令清除或设置。 FIONREAD: 通过由ioctl的第三个参数指向的整数返回当前在本套接口接收缓冲区中的字节数。本特性同样适用于文件,管道和终端。 FIOSETOWN: 对于套接口和SIOCSPGRP等效。FIOGETOWN: 对于套接口和SIOCGPGRP等效。 接口配置:得到系统中所有接口由SIOCGIFCONF请求完成,该请求使用i
8、fconf结构,ifconf又使用ifreq结构,如下所示: Structifconf{ intifc_len; //缓冲区的大小
此文档下载收益归作者所有