• ioctl接口内容操作


    int ioctl( int fd, int request, .../* void *arg */ ) 详解
    第三个参数总是一个指针,但指针的类型依赖于request 参数。我们可以把和网络相关的请求划分为6 类:
    套接口操作
    文件操作
    接口操作
    ARP 高速缓存操作
    路由表操作
    流系统
    下表列出了网络相关ioctl请求的request 参数以及arg 地址必须指向的数据类型:
    类别
    Request
    说明
    数据类型
    SIOCATMARK
    SIOCSPGRP
    SIOCGPGRP
    是否位于带外标记
    设置套接口的进程ID 或进程组ID
    获取套接口的进程ID 或进程组ID
    int
    int
    int
    FIONBIO
    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
    SIOCRTMSG
    增加路径
    删除路径
    获取路由表
    struct rtentry
    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 : 根据ioctl 的第三个参数指向一个0 值或非0 值分别清除或设置针对本套接口的信号驱动异步I/O 标志,它决定是否收取针对本套接口的异步I/O 信号(SIGIO )。本请求和O_ASYNC 文件状态标志等效,而该标志可以通过fcntl 的F_SETFL 命令清除或设置。
    FIONREAD : 通过由ioctl的第三个参数指向的整数返回当前在本套接口接收缓冲区中的字节数。本特性同样适用于文件,管道和终端。
    FIOSETOWN : 对于套接口和SIOCSPGRP 等效。
    FIOGETOWN : 对于套接口和SIOCGPGRP 等效。
  • 相关阅读:
    Mockito测试
    linux笔记:shell编程-正则表达式
    linux笔记:shell基础-环境变量配置文件
    linux笔记:shell基础-bash变量
    linux笔记:shell基础-bash基本功能
    linux笔记:shell基础-概述和脚本执行方式
    linux笔记:文件系统管理-fdisk分区
    linux笔记:文件系统管理-分区、文件系统以及文件系统常用命令
    linux笔记:权限管理-sudo
    linux笔记:用户和用户组管理-用户管理命令
  • 原文地址:https://www.cnblogs.com/baiduboy/p/7286209.html
Copyright © 2020-2023  润新知