zoukankan      html  css  js  c++  java
  • 系统调用方式文件编程,王明学learn

                    系统调用方式文件编程

    一、文件描述符

      在Linux系统中,所有打开的文件也对应一个数字,这个数字由系统来分配,我们称之为:文件描述符。

    二、函数学习

    2.1打开文件  open

    2.1.2 函数原形

      1).int open(const char *pathname,int flags);

      2).int open(const char *pathname,int flags,mode_t mode);

    2.1.3 函数功能

      打开或者创建一个文件

    2.1.4 所属头文件

      <sys/types.h>   <sys/stat.h>   <fcntl.h>

    2.1.5 返回值

      成功:文件文件描述符       失败:-1

    2.1.6 参数说明

    pathname:要打开的文件名(包含路径)

    flags:文件打开的标志(参数含义如表格)

      O_APPEND:已追加的方式打开文件

      O_CREAT:如果要打开的文件不存在,创建该文件

    mode:一定是在flags中使用了O_CREAT标志,mode记录待创建的文件访问权限(标志含义如下)

      

    2.2 创建文件   creat

    2.2.1 函数原形

      int creat(const char *pathname,mode_t mode);

    2.2.2 函数功能

      创建一个文件并且以只写方式打开

    2.2.3 所属头文件

      <sys/types.h>   <sys/stat.h>   <fcntl.h>

    2.2.4 返回值

      成功:文件描述符     失败:-1

    2.2.5 参数说明

      Pathname:创建的文件名(含路径)

      mode:创建的文件的读写权限

    2.3读文件read

    2.3.1 函数原形

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

    2.3.2函数功能

      从一个打开的文件中读取数据

    2.3.3 所属头文件

      <unistd.h>

    2.3.4 返回值

      成功:返回读取的字节数

        失败:-1

    2.3.5 参数说明

      fd:要读取数据的文件描述符

      count:希望读取的字节数

      buf:读取到的数据存放到buf指向的空间

    2.4 写文件  write

    2.4.1.函数原形

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

    2.4.2 函数功能

      向一个打开的文件写入数据

    2.4.3所属头文件

      <unistd.h>

    2.4.4返回值

      成功:返回写入到文件的字节数

        失败:-1

    2.4.5参数说明

      fd:要写入的文件描述符

      buf:从buf中取数据

      count:要写入的字节数

    2.5定位文件lseek

    2.5.1函数原形

      off_t lseek(int fd,off_t offset,int whence);

    2.5.2函数功能

      lseek()将文件读写指针相对 whence 移动 offset 个字节

    2.5.3所属头文件

      <unistd.h>  <sys/types.h>

    2.5.4返回值

      成功:返回距离文件头的偏移量  

      失败:-1

    2.5.5参数说明

      fd:要调整的文件

      offset:偏移的地址数目

        offset 取负值,例如下述调用将文件指针相对当前位置向前移动 5 个字节。

         lseek(fd, -5, SEEK_CUR);

         由于 l seek 函数的返回值为文件指针相对于文件头的位置, 因此下列调用的返回值就是文件的长度:

         lseek(fd, 0, SEEK_END);

      whence:表示的是文件指针从什么地址移动 

        SEEK_SET:相对文件开头。
        SEEK_CUR:相对文件读写指针的当前位置。
        SEEK_END:相对文件末尾。

    2.6复制文件描述符dup 

    2.6.1函数原形 

      int dup(int oldfd); 

    2.6.2 函数功能 

      复制一个文件描述符 

    2.6.3 所属头文件 

      <unistd.h> 

    2.6.4返回值 

      成功:返回新的文件描述符

        失败:-1 

    2.6.5参数说明 

      oldfd:待复制的老文件描述符

     实例:

    1    #include <sys/types.h> 
    2    #include <sys/stat.h> 
    3    #include <fcntl.h> 
    4    #include <stdio.h> 
    5    #define LENGTH 100 
    6    main()
    7    { 
    8          int fd, len; 
    9          char str[LENGTH]; 
    10
    11        fd = open("hello.txt",O_CREAT |O_RDWR,S_IRUSR  |S_IWUSR);  /* 
    12        创建并打开文件  */ 
    13    if (fd) 
    14    { 
    15          write(fd,  "Hello  World",  strlen("Hello  World"));  /*写入字符串  */ 
    16 
    17          close(fd); 
    18    } 
    19
    20        fd = open("hello.txt",O_RDWR); 
    21        len = read(fd, str, LENGTH); /*  读取文件内容  */ 
    22        str[len] = ''; 
    23        printf("%s
    ", str); 
    24        close(fd); 
    25  }  

     

     

     

     

     

  • 相关阅读:
    java 网络编程入门
    正确、安全地停止SpringBoot应用服务
    spring boot application.properties文件外部配置
    logback
    基本排序算法的总结
    jqury属性操作,特殊效果
    click事件和jquery选项卡
    jquery加载方式,选择器,样式操作
    css之定位
    css中设置background属性
  • 原文地址:https://www.cnblogs.com/wmx-learn/p/5301852.html
Copyright © 2011-2022 走看看