【发布时间】:2015-01-04 22:10:35
【问题描述】:
看起来像我cannot change the working directory of the parent process,但是有什么方法可以模拟吗?我正在通过编写一个命令行工具x 来学习 C,该工具允许用户使用自定义命令导航文件系统。是否有可能写出类似x enter [directory] 然后x look 并得到相当于cd [directory] 然后ls 的东西?
我唯一的想法是在每个命令之前/之后读取/写入一些 .config 文件,这是一种跨多个 x 执行管理状态的方法。
我意识到这是我自己造成的问题,但我在玩 C 语言时玩得很开心,并且不想放弃我的想法,即开发一个包含 Unix 内置函数的基本文件系统遍历的工具.
【问题讨论】:
-
IMO 坚持一些状态听起来像是要走的路。
-
你在正确的轨道上。文件系统的目的是为需要在程序调用之间持久保存的数据提供存储。您记住的当前目录就是一个很好的例子。
-
您是否考虑过编写自己的“shell”? cd 嵌入到 shell 中,这就是它起作用的原因。尝试编写类似的东西可能会更有趣,因为您还可以执行子程序等。您可以从一个简单的带有 exit 的 read-eval-print 循环开始,然后在此基础上构建。
-
@lared,这听起来很有趣,但我不确定我会知道从哪里开始。我没有做过很多低级编程。你能推荐一些阅读或搜索的东西或教程吗?
-
完全不必低级。它可能只是一个普通程序,它从用户那里读取一行,并根据用户写的内容做出相应的反应。之后它只是等待另一条指令。 bash 和其他 shell 大致就是这样,但它们显然很复杂。一个简单的版本可以是
while(1)循环中的switch。您可以使用变量来跟踪您的目录等。如果您绝对需要运行 shell(如 bash)的 shell 来执行某些操作,则可以使用system方法。它比听起来简单。