zoukankan      html  css  js  c++  java
  • 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 等效。
  • 相关阅读:
    计算机程序的构造和解释
    StackOverflow之旅<1>------{去掉烦人的"!=null"判断}
    tomcat 启动显示指定的服务未安装
    Sql Server 表的复制
    Sql Server配置管理器与 Sql Server Management Studio
    “因为数据库正在使用,所以无法获得对数据库的独占访问权。”处理
    Win10磁贴 横向排列 增加多行 多列 磁贴横向展示
    解决使用Hyper-v 设置虚拟机网卡出现-从网络文件夹中隐藏
    Hyper-V网络设置(物理机+虚拟机)
    易语言等软件自动获取管理员权限,在64位Windows7系统非管理员帐户中执行
  • 原文地址:https://www.cnblogs.com/baiduboy/p/7286209.html
Copyright © 2011-2022 走看看