• 【学习笔记】Linux平台的文件,目录及操作


    下面介绍关于文件和目录操作的函数

    1.文件类型

    stat(),fstat()和lstat()函数

    fstat功能和stat类似,只是不以文件的路径称作为标识,而是用文件描述符标识目标文件,获得该文件的有关信息。lstat形式和功能都与stat类似,但是当目标文件是符号链接文件时,lstat返回该符号连接的有关信息。

    格式:

    #inlcude <sys/stat.h>

    #include <unistd.h>

    int stat(const chat *name, struct stat *buf);

    int fstat(int filedes, struct stat *buf);

    int lstat(const char *file, stuct stat *buf);

    与此命名文件有关的信息结构放在buf中。成功则函数返回0,否则返回-1。

    2.文件权限

    (1)access

    用来检查指定文件的属性,可以检查文件爱你是否可读,可写,可执行。

    格式:

    #include <unistd.h>

    int access(const char *file, int mode);

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

    (3)umask

    为 进程设置创建文件的许可掩码。

    格式:

    #include <sys/types.h>

    #include <sys/stat.h>

    mode_t umask(mode_t mode);

    返回以前文的文件方式创建屏蔽字。无错误返回。

    (4)chmodfchmod

    改变文件的操作权限

    格式:

    #include <sys/types.h>

    #include <sys/stat.h>

    chmod[OPTION]MODE[,MODE...] FILE;

    int chmod(const char  *path, mode_t mode);

    int fchmode(int fileds, mode_t mode);

    (5)chown,fchownlchown

    更改文件的用户ID和组ID。

    格式:

    #include <sys/types.h>

    #include <unistd.h>

    int chown(condt char *name, uid_t owner, gid_t group);

    int fchown(int filedes, uid_t owner, gid_t group);

    int lchown(const char *nam, uid_t owner, gid_t group);

    3.文件操作

    (1)link,unlinkremove

    link函数建立指向文件的新目录项。

    unlink函数删除目录项或文件(仅作用于非目录文件)。

    remove函数和unlink功能相同,只是remove可以删除目录文件

    格式:

    #include <unistd.h>

    int link(const char *old, const char *new);

    int unlink(const char *old);

    #include <stdio.h>

    int remove(const char *file);

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

    (2)rename

    此函数可以实现对一个文件或目录的更名。

    格式:

    #include <stdio.h>

    int rename(const char *old, const char *new);

    (3)symlink

    创建一个符号连接。

    #include <unistd.h>

    int symlink(const char *realpath, const char *charpath);

    (4)realink

    打开符号连接文件本身以读取连接中的文件名。

    格式:

    #include <unistd.h>

    int reslink(const char *file, const char *buf, int bufsize);

    4.文件时间

    utimeutimes

    格式:

    #include <sys.types.h>

    #inlcude <utime.h>

    int utime(const char *filename, const struct utimebuf *time);

    int utimes(char *filename, struct timeval *tvp);

    5.目录操作

    (1)mkdir

    创建一个新目录。

    格式:

    #include <sys/types.h>
    #include <sys/stat.h>

    int mkdir(const char *dname, mode_t mode);

    (2)rmdir

    删除一个目录。

    格式:

    #include <unistd.h>

    int rmdir(const char *dname);

    (3)chdirfchdir

    这两个函数的任务是搜索相对路径名的起点并可以更改当前工作目录。它们的区别是chdir用路径名来标识目标目录,而fchdir用文件描述符来标识目标目录。

    格式:

    #include <unistd.h>

    int chdir(const char *path);

    int fchdir(int filedes);

    (4)gecwd

    获取当前工作目录的绝对路径名。

    格式:

    #include <unistd.h>

    char *getcwd(char *buf, size_t bufsize);

    6.特殊设备文件

    syncfsync

    清空文件系统缓冲区

    格式:

    #include <unistd.h>

    void sync(void);

    int fsync(int filedes);

    作者:涵曦www.hanxi.cc
    出处:hanxi.cnblogs.com
    GitHub:github.com/hanxi
    Email:im.hanxi@gmail.com
    文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

    《 Skynet 游戏服务器开发实战》

  • 相关阅读:
    bzoj:2423: [HAOI2010]最长公共子序列
    bzoj:3994:vijos1949: [SDOI2015]约数个数和
    bzoj4332;vijos1955:JSOI2012 分零食
    bzoj:1726: [Usaco2006 Nov]Roadblocks第二短路
    bzoj:1724: [Usaco2006 Nov]Fence Repair 切割木板
    bzoj:1666: [Usaco2006 Oct]Another Cow Number Game 奶牛的数字游戏
    bzoj:1230: [Usaco2008 Nov]lites 开关灯
    bzoj:1941: [Sdoi2010]Hide and Seek
    bzoj:1699;poj 3264: [Usaco2007 Jan]Balanced Lineup排队
    bzoj 1705;poj 3612:[Usaco2007 Nov]Telephone Wire 架设电话线
  • 原文地址:https://www.cnblogs.com/hanxi/p/2033784.html
Copyright © 2020-2023  润新知