c -在unix (Minix)源代码中执行的shell命令在哪里?



我目前正在学习操作系统内核以及如何从源代码构建它们(我使用Minix)。

我想弄清楚shell命令(例如ls)在哪里执行。我知道在哪里找到ls.c文件(src/bin/ls),我只是不确定当用户在终端中输入它时它会在哪里被调用。

我的目标是"劫持"ls命令来完成不同的结果,而不编辑命令文件本身ls.c(例如,ls命令现在关闭计算机或回显字符串)。为了做到这一点,我需要知道来自用户的文本在哪里被解析,ls命令在哪里被执行。

我在源代码中环顾四周,我相信它位于进程管理器(src/minix/servers/pm)内部,然而,这是在我迷路之前我得到的。

我知道这是一个非常具体的问题,但希望我能解决它。
提前致谢

您将两个不同的问题混合在一起:ls二进制文件在哪里,它的源代码在哪里。对于前一个问题,您可以使用which来确定它的绝对路径。例如,在我的FreeBSD机器上,which ls输出/bin/ls。然而,ls是一个编译的二进制文件,所以它不能被"劫持"。无需更改源代码并再次编译即可轻松实现,这是后面的问题。您已经确定了ls:src/bin/ls的正确路径,因此您需要根据需要修改ls.c并对其进行编译,然后可选地将其安装到系统中。我对Minix构建系统不是很熟悉,但是你可以随时查阅Minix文档来了解如何安装更新的用户空间程序。

相关内容

  • 没有找到相关文章

最新更新