我们在讨论 "getcwd "函数时已经简要地谈到了C语言的 "CHDIR "函数。然而,本文将特别围绕 "CHDIR "函数,它主要用于改变系统的当前工作目录。我们将特别尝试探索这个函数在C脚本中使用后的行为变化。为此,我们将首先向你介绍这个函数的目的,然后是它的语法。然后,我们将讨论这个函数对Linux中shell的当前工作目录的影响。最后,我们将通过讨论执行C语言的 "CHDIR "函数可能返回的一些错误来结束我们的讨论。
什么是C语言中的CHDIR函数?
CHDIR "函数是用来改变系统的当前工作目录的。你可能想在几种不同的情况下改变你系统的当前工作目录。例如,你希望执行一个位于某个目录下的C脚本,而不是你的当前工作目录。因此,你将不得不改变你的当前工作目录来执行那个特定的C脚本。此外,利用C语言的 "getcwd "功能,可以很容易地找到当前工作目录的变化。
C语言的 "CHDIR "函数的语法如下:
$ int chdir(const char *path);
CHDIR "函数的返回类型是 "int",这意味着它总是返回一个整数值。这个函数基本上在成功时返回 "0",失败时返回"-1"。然后,参数 "const char *path "是指你在使用改变目录函数时要设置的新工作目录的路径。
CHDIR函数是否也会改变Shell的现有工作目录?
在这里,我们需要明白,改变一个正在运行的程序的当前工作目录与改变当前shell的当前工作目录是不同的。每当 "CHDIR "函数在C脚本中被使用时,它只试图修改该特定程序的当前工作目录,而不是它所运行的shell的工作目录。这意味着 "CHDIR "函数对当前shell的当前工作目录没有影响。
CHDIR函数在C语言中的用法
C编程语言中的 "CHDIR "函数只是用来改变系统的当前工作目录。为了理解它的正确用法,你必须跟随使用 "CHDIR "函数的C脚本。在这个例子中,我们首先打算在终端上显示当前工作目录,然后将其改为默认目录。做完这些后,再在终端上显示当前工作目录。

在向你解释这个C脚本之前,我们想分享一些事情。首先,我们在系统的 "Documents "目录下创建了这个C脚本文件,而不是在 "Home "目录下。我们演示了 "CHDIR "功能在C语言编程中的实际工作情况。此外,为了运行这个C脚本,我们还必须将shell的默认路径改为 "Documents "目录。此外,这个例子可以证实,"CHDIR "函数只改变正在运行的程序的当前工作目录,而不是当前shell的工作目录或路径。你可以通过下面的描述来理解这个C脚本的例子。
在这个C程序中,我们包含了 "stdio.h "和 "unistd.h "头文件。前一个头文件处理所有的输入和输出操作。相反,后一个头文件包含了我们将在本例中使用的 "CHDIR "函数的实现。在我们的 "main() "函数中,我们声明了一个大小为 "100 "的字符类型数组。这个数组将被用来保存我们系统的当前工作目录的名称。然后,我们使用了 "printf "语句和 "getcwd "函数,在实际改变当前工作目录之前在终端上打印该目录。
之后,我们使用了 "CHDIR "函数,后面是"..."。我们这样使用它是因为我们想把当前工作目录改回系统的默认目录。然后,我们使用 "printf "语句和 "getcwd "函数来检查我们的当前工作目录是否被成功改变。最后,我们用 "return 0 "语句来结束我们的C脚本。
为了编译这个C脚本的例子,我们首先改变了终端的路径,并导航到Documents目录,因为这个C脚本文件位于Documents目录中。然后,我们执行以下命令。
$ gcc chdir.c –o chdir

然后,我们在下面命令的帮助下执行这个C脚本的例子。
$ ./chdir

你可以很容易地从下面的输出中看出,由于执行了这个例子的C脚本,终端上已经打印出了两个不同的当前工作目录。第一个表示在执行 "CHDIR "命令之前我们系统的当前工作目录。相反,第二个代表执行 "CHDIR "命令后系统的当前工作目录。此外,你还可以确认,即使在我们的C脚本中执行 "CHDIR "命令,也没有对我们的shell的路径产生任何影响,也就是说,它仍然和以前一样,这说明 "CHDIR "命令只改变了正在运行的程序的当前工作目录,而没有改变当前shell的目录。

C编程语言中CHDIR函数可能返回的错误。
C编程语言的 "CHDIR "函数返回的一些最常见的错误如下。
- EACCES:指所提供路径的一个或多个组件的搜索权限被拒绝。
- EFAULT:表示所提供的路径位于允许的地址空间之外。
- ENAMETOOLONG:提供的路径名称太长,无法解析。
- ENOTDIR:所提供路径的任何一个或多个组成部分不是目录。
以上讨论的所有错误,以及其他一些错误,都会导致 "CHDIR "函数的返回值为"-1"。
总结
在这篇文章中,我们详细讨论了C语言的 "CHDIR "函数。我们首先谈到了这个函数的目的,并在说明其语法的同时解释了它的所有组成部分。随后,我们讨论了这个函数是否对shell的当前工作目录也有影响。之后,我们分享了一个C脚本来解释 "CHDIR "函数的用法。最后,我们谈到了执行这个函数时可能返回的一些错误。通过对 "CHDIR "函数的详细讨论后,你在C语言程序中使用这个函数时就不会有任何歧义了。