Linux系统调用之目录函数

本文详细介绍了Linux系统API中用于操作目录的函数,包括mkdir用于创建目录,rmdir用于删除空目录,rename用于重命名或移动文件,chdir改变进程工作目录,以及getcwd获取当前工作目录。每个函数都阐述了其参数、返回值及使用示例,并提到了对应的Linux命令行操作。
摘要由CSDN通过智能技术生成

前言

如果,想要深入的学习Linux系统调用中mkdir,rmdir,rename,chdir,getcwd等这些有关于操作目录函数,还是需要去自己阅读Linux系统中的帮助文档。
具体输入命令:

man 2 mkdir/rmdir/rename/chdir/getcwd

即可查阅到完整的资料信息。

mkdir函数

mkdir函数是Linux系统API中的一员,它的作用是:创建一个目录

它的函数原型是长这样的:

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

接下来,我来介绍一下它的两个参数与返回值

    参数:
        pathname: 创建的目录的路径
        mode: 权限,八进制的数,最终你创建出来的文件权限是:mode & (~umask)
    返回值:
        成功返回0, 失败返回-1

关于Linux中权限知识不懂的同学,可以看这篇文章详解Linux文件类型与权限

在使用这个函数之前,我们需要往C/C++文件中导入这些头文件:

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

下面用一个代码例子来演示一下mkdir函数的作用:

代码演示:创建一个目录

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

int main() {

    int ret = mkdir("aaa",0777);

    if(ret == -1) {
        perror("mkdir");
        return -1;
    }

    return 0;
}

查看一下创建好的文件信息

nowcoder@nowcoder:~/Linux/lession14$ ls -dl aaa
drwxrwxrwx 2 nowcoder nowcoder 4096 33 22:01 aaa

顺便来讲一下这个函数的Linux命令把,使用命令创建一个目录:mkdir 目录名

rmdir函数

这个函数只能删除空目录,作用比较小,就不演示了,如果同学们想要去了解,输入命令:

man 2 rmdir

自行查看说明文档即可

对于的Linux命令可以是rmdir 空文件名

rename函数

rename函数是Linux系统API中的一员,它的作用是:

  • 修改文件的名称或路径

它的函数原型是长这样的:

int rename(const char *oldpath, const char *newpath);

接下来,我来介绍一下它的两个参数与返回值

    参数:
        oldpath: 旧的文件名(路径)
        newpath:新的文件名(路径)
    返回值:
        成功返回0, 失败返回-1

在使用这个函数之前,我们需要往C/C++文件中导入这个头文件:

#include <stdio.h>

下面用一个代码例子来演示一下rename函数的作用:

代码演示,修改一个文件的名称(路径)

#include <stdio.h>

int main() {

    int ret = rename("aaa", "bbb");

    if(ret == -1) {
        perror("rename");
        return -1;
    }

    return 0;
}

至此文件aaa就被修改为bbb了。

这个rename函数与Linux命令mv的作用是相同的,重命名或移动文件的位置。

chdir函数 与 getcwd函数

chdir函数

chdir函数是Linux系统API中的一员,它的作用是:修改进程的工作目录。

它的函数原型是长这样的:

int chdir(const char *path);

接下来,我来介绍一下它的参数与返回值

    参数:
        path: 修改后的进程的工作目录
        
    返回值:
        成功返回0, 失败返回-1

在使用这个函数之前,我们需要往C/C++文件中导入这个头文件:

#include <unistd.h>

getcwd函数

chdir函数是Linux系统API中的一员,它的作用是:获取当前的工作目录

它的函数原型是长这样的:

char *getcwd(char *buf, size_t size);

接下来,我来介绍一下它的参数与返回值

    参数:
        buf: 一个传出数组,用来存储当前进程工作目录的路径。
        size:数组的大小
    返回值:进程工作目录的路径。

在使用这个函数之前,我们需要往C/C++文件中导入这个头文件:

#include <unistd.h>

现在介绍完了这两个函数,接下来让我用一个例子来展示这两个函数的用法。

代码实例:在当前工作目录下用程序在别的工作目录里生成一个文件(修改工作路径)

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

// int open(const char *pathname, int flags, mode_t mode);
// char *getcwd(char *buf, size_t size);
// int chdir(const char *path);

int main()
{

    char buf[100];
    getcwd(buf, 100);
    printf("当前的工作路径为:%s\n", buf);

    int ret = chdir("../lession13");
    if (ret == -1)
    {
        perror("chdir");
        return -1;
    }

    printf("将工作路径修改为:%s\n", "../lession13");

    int fd = open("chdir", O_CREAT | O_RDWR, 0664);
    if (fd == -1)
    {
        perror("open");
        return -1;
    }

    close(fd);

    char buf1[100];
    getcwd(buf1, 100);
    printf("当前的工作路径为:%s\n", buf1);

    return 0;
}

代码输出结果为:

nowcoder@nowcoder:~/Linux/lession14$ ./chdir 
当前的工作路径为:/home/nowcoder/Linux/lession14
将工作路径修改为:../lession13
当前的工作路径为:/home/nowcoder/Linux/lession13

总结

今天学习的Linux系统调用有关于操作目录的函数共有这些mkdir,rmdir,rename,chdir,getcwd。实际操作下来还是十分有意思的。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿宋同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值