我試圖導航並理解whoami
(和其他coreutils)一直到最底層的源代碼,就像練習一樣。如何將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();
這大約是在我的兔子孔停止。在gnulib/lib/euidaccess.c
中提到geteuid()
,但未明確定義AFAICT。它在/usr/local/unistd.h
中也被引用爲extern
,但是沒有涉及抓取我可以看到的uid的繁重工作。
我在這裏通過grep geteuid
在已知的系統頭文件中包含,因爲我在回溯其定義時遇到了問題。
問題:如何進一步深入探索geteuid()
的源代碼?什麼是快速探索這個代碼庫而不用四處搜索的最有效方式?
我在Ubuntu服務器15.04上使用Vim和一些ctags(這對導航現有系統頭文件沒有太大幫助)。我是一個可怕的開發者,這是我的學習方法,儘管我無法解決這個障礙。
'geteuid()'在'libc'中,Unix標準庫。 – Barmar