所以我正在瀏覽linux glibc源文件,我沒有看到它實際上在什麼地方執行任何操作。以下內容來自io/chdir.c
,但它代表了許多源文件。這裏發生了什麼?顯然我錯過了一些東西。什麼是祕密,它在哪裏進行系統調用或實際做什麼?系統調用位於glibc源文件中的位置
stub_warning
是一些傳統的瘋狂。 __set_errno
似乎是一個簡單的宏,設置errno
。雖然我發現weak_alias
的百萬用法,但我沒有看到它在任何地方定義。
有理解glibc如何工作的有用指南嗎?
#include <errno.h>
#include <stddef.h>
#include <unistd.h>
/* Change the current directory to PATH. */
int
__chdir (path)
const char *path;
{
if (path == NULL)
{
__set_errno (EINVAL);
return -1;
}
__set_errno (ENOSYS);
return -1;
}
stub_warning (chdir)
weak_alias (__chdir, chdir)
#include <stub-tag.h>
Ouch。這個洋蔥比我預料的多得多。謝謝大家。敬請關注。未來幾周可能會出現更多的鬧劇。 – ValenceElectron