七、文件与目录管理

一切皆文件。每一个文件或者目录都有一个inode节点,通过stat结构体来管理。

stat函数

Unix提供了一组获取文件元数据的函数:

#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
int stat(const char *path, struct stat *buf);
int fstat(iny fd, struct stat *buf);
int lstat(const char *path, struct stat *buf);

这些函数均返回文件的信息。path参数指明文件信息。fstat用文件描述符。lstat与stat类似,但是对于符号链接,lstat返回链接本身而非目标文件。

这些函数在结构stat中存储了获取的文件信息

#include <sys/stat.h>
struct stat
{
    dev_t st_dev;   // 文件位于什么设备节点上
    ino_t st_ino;   // inode号
    mode_t st_mode;  // 权限
    nlink_t st_nlink;  // 硬链接的个数
    uid_t st_uid;  //用户ID
    gid_t st_gid;  //组ID
    dev_t st_rdev; // 设备ID
    off_t st_size; //总的字节
    blksize_t st_blksize; //I/O文件的块大小
    blkcnt_t st_blocks; //分配的块数
    time_t st_atime; //上次访问的时间
    time_t st_mtime; //上次修改的时间
    time_t st_ctime; //状态最后改变的时间,文件元数据被修改的最后时间
};

错误返回-1设置错误码
这里写图片描述

权限

修改文件权限

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

改变文件权限的进程必须具有CAP_FOWNER的权利错误返回-1设置错误码
这里写图片描述

//ex
int ret;
ret = chmod("./map.png", S_IRUSR | S_IWUSR);
if(ret)
    perror("chmod");

所有权

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

int chown(const char *path, uid_t owner, gid_t group);
int lchown(const char *path, uid_t owner, gif_t group);
int fchown(int fd, uid_t owner, gid_t group);

设置路径指定文件的所有权。chown沿符号链接改变链接目标的所有权,而lchown只改变符号链接文件。
具有CAP_CHOWN能力的进程修改文件所有者和所有组。
失败返回-1设置错误码
这里写图片描述
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值