【问题标题】:basic shell - ls command after chdir()基本 shell - chdir() 之后的 ls 命令
【发布时间】:2016-02-18 08:19:15
【问题描述】:

我正在尝试创建一个基本的 shell,但是我遇到了一个问题。 shell 可以很好地更改目录,如果用户输入了无效的目录,则会输出错误。 shell 也有一个用于“pwd”的内部命令,并在更改目录后打印出新的工作目录。但是,如果我在更改目录后调用“ls”命令,则会收到以下错误:

“ls: 无法访问:没有这样的文件或目录”。

“cd”命令在父进程中处理,工作目录更改成功。 execvp() 在子进程中被调用。如果我用新的工作目录调用“ls”命令,ls 命令会很好地列出文件,但如果我只调用“ls”本身就会出现错误。问题的原因可能是什么?

【问题讨论】:

标签: c shell ls cd chdir


【解决方案1】:

该错误仅表明没有作为参数传递给 ls 命令。相当于运行以下。

ls ""

在程序中调用 ls 命令之前检查或打印命令。

【讨论】:

  • 这个答案解决了我的问题!发生的事情是我没有对我的参数标记数组执行 memset,因此标记数组的标记与前面的命令一样多。
猜你喜欢
  • 2017-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-15
  • 1970-01-01
  • 2012-04-10
  • 1970-01-01
  • 2014-05-05
相关资源
最近更新 更多