目录操作函数

1.1 mkdir 函数
打开说明文档
man mkdir # 打开第一章shell命令mkdir的说明
man 2 mkdir # 打开第二章Linux系统函数mkdir的说明
- 作用:创建一个目录
- 参数:
pathname:创建的目录的路径mode:权限,八进制的数
- 返回值:成功返回0,失败返回-1
#include <sys/stat.h>
#include <sys/types.h>
#include <stdio.h>
int main(){
int ret = mkdir("aaa", 0777);
// 直接写777,默认是十进制的数
// 0777 前导0表示八进制数
if(ret == -1) {
perror("mkdir");
return -1;
}
return 0;
}
fuerer@fuerer-virtual-machine:~/Linux/lesson14$ gcc mkdir.c -o mkdir
fuerer@fuerer-virtual-machine:~/Linux/lesson14$ rm -rf aaa/
fuerer@fuerer-virtual-machine:~/Linux/lesson14$ ./mkdir
fuerer@fuerer-virtual-machine:~/Linux/lesson14$ ll
总用量 28
drwxrwxr-x 3 fuerer fuerer 4096 3月 24 20:25 ./
drwxrwxr-x 15 fuerer fuerer 4096 3月 24 20:19 ../
drwxrwxr-x 2 fuerer fuerer 4096 3月 24 20:25 aaa/
-rwxrwxr-x 1 fuerer fuerer 8344 3月 24 20:25 mkdir*
-rw-rw-r-- 1 fuerer fuerer 570 3月 24 20:25 mkdir.c
注:
- 指定的权限为0777,但在
mkdir底层会将mode与~umask相与获得最终的权限,最终aaa权限为 0775 - 目录必须有可执行权限
x,才能进入到该目录下
1.2 rmdir 函数
rmdir 函数只能删除一个空的目录,实际应用价值较小
#include <unistd.h>
int rmdir(const char *pathname);
DESCRIPTION
rmdir() deletes a directory, which must be empty.
1.3 rename 函数
#include <stdio.h>
int rename(const char *oldpath, const char *newpath);
将 oldpath 目录名 改为 newpath
1.4 chdir 和 getcwd 函数
#include <unistd.h>
int chdir(const char *path);
- 作用:要修改进程的工作目录(目标工作目录)
- 比如在
/home/fuerer/目录下启动了一个可执行程序a.out,进程的工作目录是/home/fuerer
- 比如在
- 参数:
path:需要修改的工作目录
#include <unistd.h>
char *getcwd(char *buf, size_t size);
- 作用:获取当前工作目录
- 参数:
buf:存储路径,指向的是一个数组(传出参数)size:数组的大小
- 返回值:返回的是指向的一块内存,这个数据就是第一个参数
使用示例
#include <unistd.h>
#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>
int main() {
// 获取当前的工作目录
char buf[128];
getcwd(buf, sizeof(buf));
printf("当前的工作目录是%s\n", buf);
// 修改工作目录
int ret = chdir("/home/fuerer/Linux/lesson13");
if(ret == -1) {
perror("chdir");
return -1;
}
// 创建一个新的文件
// 创建新文件 需要指定权限
int fd = open("chdir.txt", O_CREAT | O_RDWR, 0664);
if(fd == -1) {
perror("open");
return -1;
}
close(fd);
// 再次获取当前工作目录
char buf1[128];
getcwd(buf1, sizeof(buf1));
printf("当前的工作目录是%s\n", buf1);
return 0;
}
原工作目录为 /home/fuerer/Linux/lesson14
修改后工作目录为 /home/fuerer/Linux/lesson13
之后创建新文件 chdir.txt 在修改后工作目录 /home/fuerer/Linux/lesson13下
fuerer@fuerer-virtual-machine:~/Linux/lesson14$ gcc chdir.c -o chdir
fuerer@fuerer-virtual-machine:~/Linux/lesson14$ ./chdir
当前的工作目录是/home/fuerer/Linux/lesson14
当前的工作目录是/home/fuerer/Linux/lesson13
fuerer@fuerer-virtual-machine:~/Linux/lesson14$ ls
bbb chdir chdir.c mkdir mkdir.c rename rename.c
fuerer@fuerer-virtual-machine:~/Linux/lesson14$ cd ../lesson13/
fuerer@fuerer-virtual-machine:~/Linux/lesson13$ ls
access access.c b.txt chdir.txt chmod chmod.c truncate truncate.c
fuerer@fuerer-virtual-machine:~/Linux/lesson13$
本文介绍了Linux中的四个基本目录操作函数:mkdir用于创建目录,rmdir用于删除空目录,rename实现文件或目录重命名,以及chdir和getcwd用于改变工作目录。通过实例展示了这些函数的用法和权限管理要点。
2880

被折叠的 条评论
为什么被折叠?



