【发布时间】:2017-04-26 14:14:49
【问题描述】:
我被分配了一个任务,我必须使用 ncurses 和 C 构建一个自定义终端,并且需要执行几个命令。
其中一个命令恰好是 chdir,它旨在更改工作目录,但是在更改工作目录时,除了已经构建的之外,我在 C 中找不到更相关的内容在 C 中的 chdir() 函数中。
要求我不使用可用的 chdir() 函数,而是自己构建。我什至不确定这是否可能,或者如果这是一个错误,目录处理不应该依赖于实现吗?
感谢您的时间和帮助。
【问题讨论】:
-
这是不可能的,这是一个错误。您必须使用系统调用 chdir(2) 来更改密码。谁说你必须建立自己的,他们都不知道他们在说什么。
-
我想是的,谢谢你的确认 :)
-
进程的当前工作目录由内核控制。要真正“构建自己的”,您必须修改内核。正如@AhmedMasud 所说,无论谁说你必须自己建造,他们都不知道他们在说什么。不过,需要注意的一点是,您可能不应该更改工作目录,因为它是一个进程范围的事情,可能会影响程序的其他部分。总的来说,
chdir()是要非常小心使用的东西。 -
如果这行得通:stackoverflow.com/questions/2375003/… 你理论上可以使用它——我认为它会产生一个有趣的反应。如前所述,真正的答案是肯定的——这是唯一的方法。
-
@Stefan,您的分配看起来已经很奇怪了,因为工作目录通常与终端没有直接关系,而是与 其中运行的内容 直接相关,例如一个外壳,它通常对这些东西有自己的规定。我继续怀疑这里存在误解,可能与不精确的用词有关。如果讲师坚持让你实现
chdir,那么我建议你寻求他们的帮助或建议如何实现它。也请随时将他们指向此讨论。