【问题标题】:Source code of shell commands [duplicate]shell命令的源代码[重复]
【发布时间】:2012-01-15 02:03:30
【问题描述】:

如何用C语言编写一些shell(UNIX)命令的函数?例如,退出函数的源代码是什么?如何用 C 语言编写它的函数?

例如; exit 命令:实现退出 shell 的 exit 命令。 (如何做到这一点/从哪个链接/书;可以采取一个概念?)

同样对于 pwd 命令:实现打印用户当前工作目录的 pwd 命令。

【问题讨论】:

  • exit 一定是内置的shell。

标签: c linux shell


【解决方案1】:

如果您需要源代码,可以在GNU Coreutils 页面找到。

如果您询问如何从程序中退出 shell,exit 命令行命令是 bash 内置命令,没有 /bin/exit。你必须找到合适的 PID 并杀死它。 exit 内置可能会执行一些清理,然后使用 exit(int)

如果您想要 shell 内置的源代码,请查看 bash source

【讨论】:

    【解决方案2】:

    有很多 shell 是开源或免费软件,因此您可以下载它们并研究它们的源代码。一个简单的例子是sash,一个更复杂的例子是zsh

    exit 函数(从 shell 的exit builtin 调用)在GNU libc 内部,它运行注册的处理程序(例如,atexit 等),然后调用_exit 系统调用.

    system calls主要由linux kernel处理,其源代码在kernel.org

    我强烈建议您阅读一本好的操作系统教科书,例如Modern Operating Systems by Andrew Tanenbaum,或 Understanding Operating Systems by Ann McHoes &, Ida M. Flynn。

    我还建议阅读一本好的 Posix/Unix 编程书籍,例如Advanced Unix Programming Rochkind 和已故的史蒂文斯

    【讨论】:

    • 你喜欢读哪本书??我想用 C 语言实现一些 SHELL (UNIX) 的命令,如 exit、pwd、ls 等。
    • 我在我编辑的答案中提供了一些参考。我真的建议你按照我给你的所有链接。最后,我不明白你为什么要问这个问题?您是否正在编写一个小外壳作为家庭作业?
    • 是的;任务是创建微小的外壳!只剩下几天了!几乎没有一周。所以无法得到一个正确的想法来做所有这些。所以第一步是执行这些命令并编写一些接受输入的代码等等..
    • 不,第一步是了解为什么大多数这些命令是内置的,以及什么是系统调用。
    • 就是这样;我想知道 ;从哪里,我可以有这些概念。上面发布的问题是作业的一部分。此外,我还必须这样做:提示应具有以下格式:@ >(末尾有空格)这里, 应该是您的登录名, 是主机您登录的名称,以及 当前工作目录...所以不知道从哪里开始。
    猜你喜欢
    • 1970-01-01
    • 2012-07-16
    • 2012-09-10
    • 1970-01-01
    • 1970-01-01
    • 2015-02-28
    • 2021-08-23
    • 1970-01-01
    相关资源
    最近更新 更多