说明:chdir函数用于改变当前工作目录。调用参数是指向目录的指针,调用进程需要有搜索整个目录的权限。每个进程都具有一个当前工作目录。在解析相对目录引用时,该目录是搜索路径的开始之处。如果调用进程更改了目录,则它只对该进程有效,而不能影响调用它的那个进程。在退出程序时,shell还会返回开始时的那个工作目录。
(1) 内核解析参数中的路径名,并确保这个路径名有效。为了做到这一点,就路径名解析而言,内核使用相同的算法。如果路径名无效,它输出错误消息并退出。
(2) 如果路径名有效,内核定位该目录的索引节点,并检查它的文件类型和权限位,确保目标文件是目录以及进程的所有者可以访问该目录(否则改变到新目录就没有用)。
(3) 内核用新目标目录的路径名和/或索引节点替换u区中当前目录路径名和/或它的索引节点号。
错误信息:
EFAULT: path 指向了非法地址
ENAMETOOLNG:路径过长
ENOENT:文件不存在
ENOMEM:内核内存不足
ENOTDIR:给出路径不是目录
EACCES:无访问路径中某个目录的权限
ELOOP:解析路径中太多的符号链接
EIO:发生I/O错误
实例1:
#include <unistd.h>
#include <iostream>
int main(void)
{
{
{
if(chdir("..") == -1)
}
本文详细介绍了chdir函数的功能和使用方法,包括如何通过传递目录指针来改变当前工作目录,以及内核如何验证路径的有效性并进行目录切换。此外,还提供了一个C++示例程序,演示了如何获取和更改当前工作目录。
962

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



