2024年4月27日发(作者:)

linux icotl函数解析

收藏

ioctl函数:

网络程序(一般是服务器程序)中ioctl常用于在程序启动时获得主机上

所有接口的信息: 接口的地址、接口是否支持广播、是否支持多播等等。

#include or #include

int ioctl(int fd, int request, …/*void *arg */);

返回:成功返回0,出错返回-1;

下表列出了网络相关ioctl 请求的request 参数以及arg 地址必须指向的数据类型:

Request

类说明

数据类型

SIOCATMARK

SIOCSPGRP

SIOCGPGRP

是否位于带外标记

设置套接口的进程ID 或进

程组ID

获取套接口的进程ID 或进

程组ID

FIONBIN

FIOASYNC

FIONREAD

FIOSETOWN

FIOGETOWN

设置/ 清除非阻塞I/O 标

设置/ 清除信号驱动异步

I/O 标志

获取接收缓存区中的字节

设置文件的进程ID 或进程

组ID

获取文件的进程ID 或进程

组ID

int

int

int

int

int

int

int

int

SIOCGIFCONF

SIOCSIFADDR

SIOCGIFADD

R

SIOCSIFFLAG

S

SIOCGIFFLAG

S

SIOCSIFDSTA

DDR

SIOCGIFDSTA

DDR

SIOCGIFBRD

ADDR

SIOCSIFBRDA

DDR

SIOCGIFNET

MASK

SIOCSIFNETM

ASK

SIOCGIFMET

RIC

SIOCSIFMETR

IC

SIOCGIFMTU

SIOCxxx

SIOCSARP

ASIOCGARP

RP

SIOCDARP

SIOCADDRT

SIOCDELRT

I_xxx

获取所有接口的清单

设置接口地址

获取接口地址

设置接口标志

获取接口标志

设置点到点地址

获取点到点地址

获取广播地址

设置广播地址

获取子网掩码

设置子网掩码

获取接口的测度

设置接口的测度

获取接口MTU

(还有很多取决于系统的

创建/ 修改ARP 表项

获取ARP 表项

删除ARP 表项

增加路径

删除路径

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

struct

arpreq

struct

arpreq

struct

arpreq

struct

rtentry

struct

rtentry

实现)