【问题标题】:How do I use the chdir() function to go back a directory?如何使用 chdir() 函数返回目录?
【发布时间】:2016-04-05 01:08:42
【问题描述】:

我正在用 c 创建一个简单的 shell,为了识别“cd”命令,我必须实现 chdir()。我知道它需要一个 char* 作为参数,但我如何让它执行相当于“cd ..”?

【问题讨论】:

  • 什么,chdir("..") 不起作用?
  • 如果我从子进程调用它,它在父进程中不会改变吗?
  • 为什么要在子进程中做呢?
  • 因为用户可以一次输入多个命令,然后我使用 fork 在子进程中使用 execvp() 运行每个命令,但在这种情况下我必须使用 chdir()。所以使用 if 语句来检查命令是否为“cd”。我假设我无法在子进程中执行此操作,并且必须在我 fork() 之前检查它是否为“cd”。 @user2357112
  • @user2357112 chdir("..") 不是实现cd .. 的正确方法,当涉及符号链接时它会做错事。请参阅 -P-L 选项。

标签: c shell


【解决方案1】:

使用chdir("..");。它将允许您移动到上一个目录,例如cd ..

【讨论】:

    【解决方案2】:

    cd 是 shell 的内置命令;它不能作为一个单独的程序来实现。如果您想让程序为您更改 shell 的当前目录,则需要间接进行。您不妨看看<unistd.h> 中的chdir 函数。这将更改当前进程的工作目录。另请参阅此链接以获取reference purposes

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-17
      • 1970-01-01
      • 2020-11-18
      • 1970-01-01
      • 2012-03-18
      • 2015-07-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多