• 文件io函数


    • 打开或创建一个文件

       

    1.  int open ( const char *pathname ,int flags,. . ./* mode_t mode */ )
    2.  int opent(int dirfd ,const char *pathname ,int flags,. . ./* mode_t mode */ )//可以使用相对路径打开文件

         返回值:

         成功返回文件描述符,失败返回 -1.

    int creat(const char *pathname , mode_t mode )

         返回值:

         成功返回文件描述符 ,失败返回-1

         参数:

         pathname:打开文件的路径字符串

         flags:打开文件的方式

         mode:使用时(mode& ~umask)


    • 关闭一个文件

         int close(int fd)

         返回值:

         成功返回0,失败返回-1

         参数:

         fd:已打开的文件描述符


    • 为打开文件设置偏移量

    1.      off_t lseek(int fd , off_t offset ,int whence)

         返回值:

         成功返回0,失败返回-1

         参数:

         pathname:打开文件的路径字符串 

         offset:偏移量

         whnence:SEEK_SET/SEEK_CUR/SEEK_END


    • 从打开文件中读数据

         

    ssize_t read(int fd  , void *buf ,size_t count )

         返回值:

         成功返回读到的字节数,若到达文件末尾返回0,出错返回-1。

         参数:

         buf:缓冲区存放读取的数据

         count:请求读取的字节数


    • 向打开文件写数据

        ssize_t write(int fd, const void *buf ,size_t count )

         返回值:

         成功返回已写的字节数,出错返回-1。

    • 复制一个现有的文件描述符

         int dup (int oldfd);

    功能:

    通过 oldfd 复制出一个新的文件描述符,新的文件描述符是调用进程文件描述符表中最小可用的文件描述符,最终 oldfd 和新的文件描述符都指向同一个文件。

    参数:

    oldfd: 需要复制的文件描述符 oldfd

    返回值:

    成功:新文件描述符

    失败:-1


    int dup2(int oldfd, int newfd);

    功能:

    通过 oldfd 复制出一个新的文件描述符 newfd,如果成功,newfd 和函数返回值是同一个返回值,最终 oldfd 和新的文件描述符 newfd 都指向同一个文件。

    参数:

    oldfd: 需要复制的文件描述符

    newfd: 新的文件描述符,这个描述符可以人为指定一个合法数字(0-1023),如果指定的数子已经被占用(和某个文件有关联),此函数会自动关闭 close() 断开这个数字和某个文件的关联,再来使用这个合法数字。

    返回值:

    成功:返回 newfd

    • 同步内存中所有已修改的文件数据到储存设备

    1.      int fsync (int fd);
    2.      int fdatasync (int fd);//只影响数据部分,不更新文件属性   

         返回值:

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

    • 改变已经打开文件的属性

      

       int fcntl (int fd , int cmd , ../* arg */);

    返回值:

         成功返回值取决于cmd,出错返回-1

    cmd的取值可以如下:

    • 复制文件描述符

    F_DUPFD (long)

    • 设置/获取文件描述符标志

    F_GETFD (void)-

    F_SETFD (long)    

    • 设置/获取文件状态标志

    F_GETFL (void)

    F_SETFL (long)

    • 获取/设置文件锁

    F_GETLK

    F_SETLK,F_SETLKW

    • 文件描述符的标志

    FD_CLOEXEC

    • 对设备的I/O通道进行管理

          

    int ioctl(int fd, ind cmd, …)

     ioctl函数是文件结构中的一个属性分量,就是说如果你的驱动程序提供了对ioctl的支持,用户就可以在用户程序中使用ioctl函数控制设备的I/O通道。

    参数:

    fd:用户程序打开设备时使用open函数返回的文件标示符,

    cmd:用户程序对设备的控制命令,至于后面的省略号,那是一些补充参数,一般最多一个,有或没有是和cmd的意义相关的。 

    ​​​​​​​返回值:
      ioctl函数的实现是根据命令执行的一个switch语句,但是,当命令不能匹配任何一个设备所支持的命令时,通常返回-EINVAL(非法参数);

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

    类别

    Request

    说明

    数据类型

    SIOCATMARK

    SIOCSPGRP

    SIOCGPGRP

    是否位于带外标记

    设置套接口的进程ID 或进程组ID

    获取套接口的进程ID 或进程组ID

    int

    int

    int

     

    FIONBIN

    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

    增加路径

    删除路径

    struct rtentry

    struct rtentry

    I_xxx

  • 相关阅读:
    Selenium元素定位之页面检测技巧
    设计模式-享元模式、享元模式示例
    [JavaWeb学习] Spring Ioc和DI概念思想
    Operator-1初识Operator
    viewBinding与反射结合的实用实践
    SpringBoot整合Shiro
    第二章操作系统测试
    【RabbitMQ】RabbitMQ的交换机
    spring cloud
    数据优化 | CnOpenData中国工业企业绿色专利及引用被引用数据
  • 原文地址:https://blog.csdn.net/qq_21438461/article/details/125542116