【发布时间】:2012-01-15 02:03:30
【问题描述】:
如何用C语言编写一些shell(UNIX)命令的函数?例如,退出函数的源代码是什么?如何用 C 语言编写它的函数?
或
例如; exit 命令:实现退出 shell 的 exit 命令。 (如何做到这一点/从哪个链接/书;可以采取一个概念?)
同样对于 pwd 命令:实现打印用户当前工作目录的 pwd 命令。
【问题讨论】:
-
exit一定是内置的shell。
如何用C语言编写一些shell(UNIX)命令的函数?例如,退出函数的源代码是什么?如何用 C 语言编写它的函数?
或
例如; exit 命令:实现退出 shell 的 exit 命令。 (如何做到这一点/从哪个链接/书;可以采取一个概念?)
同样对于 pwd 命令:实现打印用户当前工作目录的 pwd 命令。
【问题讨论】:
exit 一定是内置的shell。
如果您需要源代码,可以在GNU Coreutils 页面找到。
如果您询问如何从程序中退出 shell,exit 命令行命令是 bash 内置命令,没有 /bin/exit。你必须找到合适的 PID 并杀死它。 exit 内置可能会执行一些清理,然后使用 exit(int)。
如果您想要 shell 内置的源代码,请查看 bash source。
【讨论】:
有很多 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 和已故的史蒂文斯
【讨论】: