Linux系统调用之目录函数

前言

如果,想要深入的学习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
#include

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

代码演示:创建一个目录

#include 
#include 
#include 

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

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

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

#include 

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

getcwd函数

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

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

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

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

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

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

#include

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

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

#include 
#include 
#include 
#include 
#include 

// 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。实际操作下来还是十分有意思的。

你可能感兴趣的:(Linux,linux,运维,服务器)