[APUE]第四章 文件和目录

本文详细介绍Linux下文件和目录的操作方法,包括使用stat、fstat、lstat等函数获取文件信息,以及如何设置文件权限和用户ID。此外还介绍了文件系统的概念、目录操作API和文件时间属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第四章 文件和目录

本章主要围绕stat这个函数来讲的。

int stat(const char* pathname, struct stat* buf);
int fstat(int fd, struct stat* buf);
int lstat(const char* pathname, sttuct stat* buf);	//如果是符号链接,返回符号链接的文件信息
struct stat{
mode_t 	st_mode;
ino_t 	st_ino;
dev_t 	st_dev;
dev_t	st_rdev;
nlink_t	st_nlink;
uid_t	st_uid;
gid_t	st_gid;
off_t		st_size;
time_t	st_atime;
time_t	st_mtime;
time_t	st_ctime;
blksize_t	st_blksize;
blkcnt_t	st_blocks;
};

文件类型有普通文件、目录文件、字符设备文件、块设备文件、FIFO文件、socket文件、符号链接七种文件类型。保存在stat结构中的st_mode中,分别有宏可以测试文件类型。

设置用户ID和设置组ID

这两个是权限管理使用的。当设置了设置用户ID就会是运行用户的有效用户ID设置成这个文件的所有者,这样运行这个用户就获得了,这个文件所有者的权限。设置组也是一样的道理。一般是通过chmod +0xabc来设置用户ID和组ID位的其中x=4 设置用户ID位,x=2设置组ID位。这两个位是保存在st_mode中的,也有宏可以测试这个位是否存在。

新文件和目录的访问权限:

新文件的用户ID设置成进程的有效用户ID,组ID或者是文件所在目录的ID或者hi进程的有效用户ID。

int access(const char* pathname, int mode) //以实际用户来查看文件权限 mode 可以使R_OK (读) W_OK(写) X_OK(执行) F_OK(存在与否)
mode_t umask(mode_t cmask);//设置文件模式创建屏蔽字。
int chmod(const char* pathname, mode_tmode);//给文件赋权限。
int fchmod(int fd ,mode_t mode);//给打开的文件赋权限。
int chown(const char* pathname, uid_towner, gid_t group).//修改文件的用户ID和组ID

文件空洞。

int truncate(const char* pathname, off_tlength)//把文件截断长度为length
int ftruncate(int fd, off_t length);

文件系统:


上面这图是整个文件系统的概述。


上面这图是目录结构i节点和目录项之间的关系。也可以查看i节点和文件的关联(p87)

int link(const char* pathname, const char*newpath)		//创建一个以pathname相同i节点的新目录项
int unlink(const char* pathname)						//删除一个目录项
int remove(const char* pathname)					//可以删除文件或者目录。
int rename(const char* oldname, const char*newpath)		//文件更名

文件时间

stat结构有st_atime(访问时间[l1])、st_mtime(内容修改时间)、st_ctime(i节点信息修改时间)

目录操作

int mkdir(const char* pathnamer, mode_tmode)//创建一个空目录
int rmdir(const char* pathname)//删除空目录
DIR* opendir(const char* pathname)
struct dirent* readdir(DIR* dp);
closedir(DIR* dp);
void rewinddir(DIR* dp);
long telldir(DIR* dp)
void seekdir(DIR * dp, long loc)

资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在当今的软件开发领域,自动化构建与发布是提升开发效率项目质量的关键环节。Jenkins Pipeline作为一种强大的自动化工具,能够有效助力Java项目的快速构建、测试及部署。本文将详细介绍如何利用Jenkins Pipeline实现Java项目的自动化构建与发布。 Jenkins Pipeline简介 Jenkins Pipeline是运行在Jenkins上的一套工作流框架,它将原本分散在单个或多个节点上独立运行的任务串联起来,实现复杂流程的编排与可视化。它是Jenkins 2.X的核心特性之一,推动了Jenkins从持续集成(CI)向持续交付(CD)及DevOps的转变。 创建Pipeline项目 要使用Jenkins Pipeline自动化构建发布Java项目,首先需要创建Pipeline项目。具体步骤如下: 登录Jenkins,点击“新建项”,选择“Pipeline”。 输入项目名称描述,点击“确定”。 在Pipeline脚本中定义项目字典、发版脚本预发布脚本。 编写Pipeline脚本 Pipeline脚本是Jenkins Pipeline的核心,用于定义自动化构建发布的流程。以下是一个简单的Pipeline脚本示例: 在上述脚本中,定义了四个阶段:Checkout、Build、Push packageDeploy/Rollback。每个阶段都可以根据实际需求进行配置调整。 通过Jenkins Pipeline自动化构建发布Java项目,可以显著提升开发效率项目质量。借助Pipeline,我们能够轻松实现自动化构建、测试部署,从而提高项目的整体质量可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值