服务器编程中经常使用ioctl获取所在主机全部网络接口的信息,比如:接口地址是否支持广播、是否支持多播等。
ioctl 函数
函数定义:
#include <unistd.h>
int ioctl(int fd, int request, .../*void *arg */);
参数:
fd
:文件描述符
arg
:操作类型指向的数据类型地址
request
:操作类型。一般类型为如下6类:1.套接字操作;2.文件操作;3.接口操作;4.ARP高速缓存操作;5.路由表操作;6.流系统。request参数如下定义:
套接字操作
ioctl用于套接字时,第三个参数指向某个整数的一个指针。
SIOCATMARK:如果本套接字的读指针当前位于带外标记,就通过第三个参数指向的整数返回一个非0值,否则返回一个0值。
SIOCGPGRP:通过由第三个参数指向的整数返回本套接字的进程ID或进程组ID,该ID指定针对本套接字的SIGIO或SIGURG信号的接收进程。
SIOCSPGRP:把本套接字的进程ID或进程组ID设置成由第三个参数指向的整数,该ID指定针对本套接字的SIGIO或SIGURG信号的接收进程。
文件操作
这一组请求以FIO开头,他们可能不适用于除套接字以外的某些特特定类型的文件。这些请求都要求第三个参数指向一个整数。
FIONBIO:根据ioctl的第三个参数指向一个0值或非0值,可清除或设置该套接字的非阻塞IO标志。与O_NONBLOCK文件状态标志等效,可以通过fcntl的F_SETFL命令清除或设置该标志。
FIOASYNC:根据ioctl的第三个参数指向一个0值或非0值,可清除或设置针对本套接字的信号驱动异步IO标志,决定是否收取针对本套接字的异步IO信号。
FIOBREAD:通过由ioctl的第三个参数指向的整数返回当前在本套接字接收缓冲区中的字节数。
FIOSETOWN:对于套接字和SIOCSPGRP等效。
FIOGETOWN:对于套接字和SIOCGPGRP等效。
其他的操作不常用,需要用到时查询详细资料了解。