为了最大限度地学习,我最终从以下位置克隆了整个 Linux 源代码:github。我想检查一下“watch”命令是如何在其中实现的,但是当我尝试 grep“watch”时,代码实在是太庞大了,无法返回任何有用的信息。我想知道你们中是否有人可以帮忙。
答案1
此外。
它位于 procps 包中。
例如,如果您搜索 ubuntu 的手册页,它通常会显示哪个软件包提供了代码。(像这样)
源代码可以在这里找到(这里)。
直接下载: http://procps.sourceforge.net/procps-3.2.8.tar.gz
或者你可以使用 dpkg 来查看哪个包拥有某个特定文件,如下所示:
dpkg -S /usr/bin/watch
查找任何命令的源代码:
因此,如果您想查看top
源代码,您可以:
whereis top
二进制文件top
是“/usr/bin/top”,要找到拥有该文件的包:
dpkg -S /usr/bin/top
确保:
sudo apt-get install dpkg-dev
然后您可以通过以下方式找到包的源代码:
sudo apt-get source procps
sudo apt-get source gedit
sudo apt-get source <package-name>
它将在当前目录中下载一个 tar 文件并解压:
然后我们应该能够找到其工作原理的源代码:
答案2
也许您可以从 开始strace watch
。
来自strace 的手册页:
strace is a useful diagnostic, instructional, and debugging tool. Sys‐ tem administrators, diagnosticians and trouble-shooters will find it invaluable for solving problems with programs for which the source is not readily available since they do not need to be recompiled in order to trace them. Students, hackers and the overly-curious will find that a great deal can be learned about a system and its system calls by tracing even ordinary programs. And programmers will find that since system calls and signals are events that happen at the user/kernel interface, a close examination of this boundary is very useful for bug isolation, sanity checking and attempting to capture race conditions.
答案3
我认为这链接可能会有帮助。我只是在 Google 上搜索 watch.c