zoukankan      html  css  js  c++  java
  • Linux文件的基本操作函数

    1、Linux文件的基本操作

    Linux文件的基本操作主要包括了文件的创建、打开、读写和关闭等基本操作。

    1.1、文件操作系统调用

    (1)创建文件系统函数

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

    参数:

             pathname:要创建文件的名称

             mode:新建文件的存取权限,可通过umask()系统调用改变文件权限

    返回值:

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

             失败:返回-1或者其它错误号

    (2)修改文件权限函数

    将文件设置为新的mask,并且返回旧的mask

    mode_t umask(mode_t mask);

    参数:

             mask:要设置的文件权限

    返回值:

             返回文件旧的权限

    (3)文件打开函数

    文件打开函数open()具有两种函数形式

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

    参数:

             pathname:要打开的文件名

             flages:文件打开的标志

          O_RDONLY:以只读方式打开文件

          O_WRONLY:以只写方式打开文件

          O_RDWR:以读写方式打开文件

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

          O_CREAT:创建一个文件

          O_NOBLOCK:以非阻塞的方式打开文件

          O_TRUNC:如果文件已存在,则删除文件的内容

             mode:设置文件的访问权限,可以使用或逻辑进行配合使用

          S_IRUSR:用户可以读

          S_IWUSR:用户可以写

          S_IXUSR:用户可以执行

          S_IRWXU:用户可以读、写、执行

          S_IRGRP:组可以读

          S_IWGRP:组可以写

          S_IXGRP:组可以执行

          S_IRWXG:组可以读、写、执行

          S_IROTH:其他人可以读

          S_IWOTH:其他人可以写

          S_IXOTH:其他人可以执行

          S_IRWXO:其他人可以读、写、执行

          S_ISUID:设置用户执行ID

          S_ISGID:设置组的执行ID

    返回值:

             成功:返回文件描述符

             失败:返回-1或者其他错误号

    (4)文件读函数

    对文件进行打开操作后,使用read()可以对文件进行读操作,函数原型如下

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

    参数:

             fd:要读的文件的文件描述符

             buf:缓冲区,用来保存在文件中读到的内容

             count:要读的字节数

    返回值:

             成功:返回已经读到的字节数

             失败:返回-1

    (5)文件写函数

    对文件进行打开操作后,使用write()可以对文件进行写操作,函数原型如下

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

    参数:

             fd:要写的文件的文件描述符

             buf:缓冲区,保存要写入文件里面的内容

             count:要写入的字节数

    返回值:

             成功:返回已经写入的字节数

             失败:返回-1

    (6)文件指针定位函数

    使用lseek()能对文件指定的文件进行读写操作,函数原型如下

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

    参数:

             fd:要操作的文件的文件描述符

             offset:相对于whence的偏移字节数,能取负值

             whence:相对位置

          SEEK_SET:相对文件开头

          SEEK_CUR:相对文件读写指针的当前位置

          SEEK_END:相对文件末尾

    返回值:

             成功:返回新的偏移位置

             失败:返回-1

    (7)文件关闭函数

    打开文件对文件进行相关的读写操作后,必须要关闭文件,函数原型如下

    int close(int fd);

    参数:

             fd:要关闭的文件的文件描述符

    返回值:

             成功:返回0

             失败:返回-1

    1.2、C库文件函数调用

    C库文件函数的操作独立于具体的操作系统平台

    (1)文件创建和打开函数

    FILE *fopen(const char *path, const char *mode);

    参数:

             path:要创建或者打开的文件名

             mode:以何种方式打开或创建文件

          r/rb:以只读方式打开文件

          w/wb:以只写方式打开文件

          a/ab:以追加的方式打开文件,如果文件不存在,则创建文件

          r+/r+b/rb+:以读写的方式打开

          w+/w+b/wh+:以读写方式打开,如果文件不存在,则创建文件

          a+/a+b/ab+:以读和追加方式打开,如果文件不存在,则创建新文件

    返回值:

             成功:返回FILE文件指针

             失败:返回NULL

    (2)文件读写函数

    C库函数支持以字符或者字符串的形式对文件进行读写操作

    int fgetc(FILE *stream);
    char *fgets(char *s, int size, FILE *stream);
    int fputc(int c, FILE *stream);
    int fputs(const char *s, FILE *stream);
    int fprintf(FILE *stream, const char *format, ...);
    int fscanf(FILE *stream, const char *format, ...);
    size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
    size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);

    (3)文件指针定位函数

    int fseek(FILE *stream, long offset, int whence);

    参数:

             stream:要操作的文件的文件指针

             offset:偏移量

             whence:文件的相对位置

          SEEK_SET:相对于文件头

          SEEK_CUR:相对于文件的当前位置

          SEEK_END:相对于文件的末尾

    返回值:

      成功:返回0

      失败:返回-1

    (4)文件关闭函数

    int fclose(FILE *stream);

    参数:

             stream:要关闭文件的文件指针

    返回值:

             成功:返回0

             失败:返回错误号

    参考:

    《LINUX设备驱动程序(第3版)》

    《Linux设备驱动开发详解:基于最新的Linux 4.0内核》

  • 相关阅读:
    Java如何编写自动售票机程序
    install windows service
    redis SERVER INSTALL WINDOWS SERVICE
    上传文件
    This problem will occur when running in 64 bit mode with the 32 bit Oracle client components installed.
    解决Uploadify上传控件加载导致的GET 404 Not Found问题
    OracleServiceORCL服务不见了怎么办
    Access to the temp directory is denied. Identity 'NT AUTHORITYNETWORK SERVICE' under which XmlSerializer is running does not have sufficient permiss
    MSSQL Server 2008 数据库安装失败
    数据库数据导出成XML文件
  • 原文地址:https://www.cnblogs.com/Cqlismy/p/11358761.html
Copyright © 2011-2022 走看看