Linux目录操作函数
Posted 傅耳耳
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux目录操作函数相关的知识,希望对你有一定的参考价值。
目录操作函数
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目录操作函数的主要内容,如果未能解决你的问题,请参考以下文章