linux下的目录操作(未完成版)

需要对目录进行什么样的操作?
1.创建和删除目录
2.获取目录信息
3.改变目录的访问权限
4.获取、改变当前目录
5.以后有的话再补充。

注:
1.其中有一些作者不确定的,会在后面标注(?)来说明。
2.如果该博客有错误或疏漏,请留言提出来,谢谢。本作者会尽快改正。

1.创建和删除目录

头文件

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

函数

int mkdir(const char *pathname, mode_t mode);
int rmdir(const char *pathname);

例子:
创建目录代码
tips:1.创建的目录权限会受到进程的umask值(默认为0002(第一个0表示8进制))和(可能存在的)父目录的默认访问控制列表影响。
目录权限

获取目录信息

环境分析:(为什么需要获取目录信息?或者说获取目录信息我们可以做什么?)

相关的结构体
dirent结构体

d_ino				inode number(此目录进入点的inode)
d_off				offset to this dirent(在目录文件中的偏移)
d_reclen			length of this record(记录长度)
d_type				type of file(文件类型)
d_name			filename(文件名)

DIR

//DIR的结构体就是上面的结构体,后面称为目录流
typedef struct __dirstream DIR;			
	
fd											文件描述符,整形数
allocation									分配给块(DIR)的空间
size										块(DIR)的有效数据的最大长度
offset										块内的当前偏移量
data										目录块(字符串)
filepos										下一个要读取的条目的位置

头文件

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

函数

//打开目录和关闭目录
DIR* opendir(const char* name);				//打开一个目录文件,返回目录流
int closedir(DIR *dir);						//关闭一个目录流
//获取目录信息
struct dirent *readdir(DIR *dir);			//读取目录流,返回dirent结构体
off_t telldir(DIR *dir);					//返回目录流当前读取位置
//修改相关信息
void rewinddir(DIR *dir);					//重新定位到目录流的头部
void seekdir(DIR *dir, off_t offset);		//用来设置目录流目前读取位置
//获取,改变当前目录
char* getcwd(char* buf, size_t size);					//获取当前目录,相当与pwd
int chdir(const char* path);									//修改当前目录,相当于cd
  1. chdir不支持使用~,跳转至家目录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值