Чтобы максимизировать обучение, я закончил клонированием всего исходного кода Linux из github . Я хотел проверить, как в нем реализована команда 'watch', но код слишком велик, чтобы возвращать что-нибудь полезное, когда я пытаюсь выполнить grep 'watch'. Мне было интересно, если кто-нибудь из вас может помочь.
Кроме того.
Он находится в пакете procps.
Например, если вы будете искать на страницах man 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 в текущий каталог и извлечет его:
Затем мы сможем найти исходный код, как он работает:
Может быть, вы могли бы начать с 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.
Для получения подробной информации о реализации вам в конечном итоге придется полагаться на исходный код. Вы можете воспользоваться такими инструментами, как csope и ctags .
Я думаю, эта ссылка может помочь. Я просто Google для watch.c