【发布时间】:2011-09-24 19:51:21
【问题描述】:
所以我浏览了 linux glibc 源代码,但看不到它实际上在哪里做任何事情。以下来自io/chdir.c,但它表示许多源文件。这里发生了什么?显然我错过了一些东西。有什么秘密,它在哪里进行系统调用或实际做某事?
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>
【问题讨论】:
-
哎哟。这个洋葱的层次比我预期的要多得多。谢谢大家。敬请关注。未来几周可能会出现更多欢闹。