我正在尝试导航和理解whoami
(和其他 coreutils)一直到最低级别的源代码,就像一个练习一样。
到目前为止我的潜水:
实际的二进制文件在哪里?
which whoami
/usr/bin/whoami
它在哪里维护?
我如何获得来源?
git clone git://git.sv.gnu.org/coreutils
whoami
存储库中的源代码在哪里?
# find . | grep whoami
./man/whoami.x
./man/whoami.1
./src/whoami.c
./src/whoami
./src/whoami.o
./src/.deps/src_libsinglebin_whoami_a-whoami.Po
./src/.deps/whoami.Po
相关行(84):
uid = geteuid ();
这大约是我的兔子洞停止的地方。geteuid()
中提到gnulib/lib/euidaccess.c
,但未明确定义 AFAICT。它也在/usr/local/unistd.h
as中被引用,extern
但没有与抓取我可以看到的 uid 相关的繁重工作。
我主要是通过geteuid
在已知的系统标头中寻找并包括在内,因为我在回溯其定义时遇到了麻烦。
问题:我怎样才能进一步深入探索源代码geteuid()
?在不费力的情况下快速探索这个代码库的最有效方法是什么?
我在使用 Vim 和一些 ctags 的 Ubuntu 服务器 15.04 上(这对于导航现有系统头文件没有太大帮助)。我是一个糟糕的开发人员,这是我的学习方法,尽管我无法通过这个障碍。