📜  chdir()用C语言编写的示例

📅  最后修改于: 2021-05-25 21:52:28             🧑  作者: Mango

chdir命令是一个系统函数(系统调用),用于更改当前工作目录。在某些系统上,此命令用作shell命令cd的别名。 chdir将调用进程的当前工作目录更改为path中指定的目录。

句法:

int chdir(const char *path);

参数:这里的路径是用户要创建当前工作目录的目录路径。

返回值:该命令成功返回零(0)。错误时返回-1,并正确设置了errno。

注意:它在unistd.h声明。

范例1:

#include
  
// chdir function is declared
// inside this header
#include 
int main()
{   
    char s[100];
  
    // printing current working directory
    printf("%s\n", getcwd(s, 100));
  
    // using the command
    chdir("..");
  
    // printing current working directory
    printf("%s\n", getcwd(s, 100));
  
    // after chdir is executed
    return 0;
}

输出:

注意:上面的程序更改了进程的工作目录。但是,它不会更改当前shell的工作目录。因为在外壳中执行程序时,外壳遵循exec机制上的fork。因此,它不会影响当前的shell。

范例2:

#include 
#include 
  
// Main Method
int main() {
  
  // changing the current 
  // working directory(cwd)
  // to /usr
  if (chdir("/usr") != 0) 
    perror("chdir() to /usr failed");
  
  // changing the cwd to /tmp
  if (chdir("/tmp") != 0) 
    perror("chdir() to /temp failed");
  
  // there is no /error 
  // directory in my pc
  if (chdir("/error") != 0) 
  
    // so chdir will return -1 
    perror("chdir() to /error failed");  
  
  return 0;
}

输出:

错误:可能存在可以返回的错误。这些取决于文件系统。

  • EACCES:如果对路径的组成部分之一的搜索许可被拒绝。
  • EFAULT:如果路径点位于可访问的地址空间之外。
  • EIO:如果发生I / O错误。
  • ELOOP:如果在解析路径中遇到太多符号链接。
  • ENAMETOOLONG:如果路径太长。
  • ENOENT:如果文件不存在。
  • ENOMEM:如果没有足够的内核内存可用。
  • ENOTDIR:如果path的组成部分不是目录。
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。