【发布时间】: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选项。