当前位置: 首页 > 面试题库 >

glibc源代码中的系统调用在哪里

司马建柏
2023-03-14
问题内容

因此,我一直在浏览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>

问题答案:

您发现的是未实现的系统的存根函数。您需要在sysdeps树下查看实际的实现。以下可能是您感兴趣的:

  • sysdeps/unix/sysv/linux
  • sysdeps/posix
  • sysdeps/i386(或x86_64您的cpu拱门是什么)


 类似资料:
  • 问题内容: 我试图在glibc源代码中找到select()源代码(Linux,i386架构),但我找不到任何东西(与所述体系结构有关) 谁能指出我的select()源代码? 问题答案: select()不是libc的函数,而是内核函数,因此您需要查看内核源代码。 您可以通过查看手册页来说明这一点:如果在第2节中,则为内核函数;如果在第3节中,则为标准C库的函数,在您的情况下为glibc。 编辑:像

  • 问题内容: 在Linux中,只要有源代码树,在哪里可以找到所有系统调用的源代码?另外,如果我想查找特定系统调用的源代码和程序集,是否可以在终端中键入以下内容 ? 问题答案: 您需要Linux内核源代码才能查看系统调用的实际源代码。手册页(如果安装在本地系统上)仅包含调用的文档,而不包含调用源本身。 对于您来说不幸的是,系统调用并不仅仅存储在整个内核树中的一个特定位置。这是因为各种系统调用可以引用系

  • 本文向大家介绍C++系统调用是什么,你用过哪些系统调用相关面试题,主要包含被问及C++系统调用是什么,你用过哪些系统调用时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 1)概念: 在计算机中,系统调用(英语:system call),又称为系统呼叫,指运行在使用者空间的程序向操作系统内核请求需要更高权限运行的服务。系统调用提供了用户程序与操作系统之间的接口(即系统调用是用户程序和内核交互的

  • 问题内容: 我正在寻找Sun标准Java编译器的源代码。 jdk1.6.0_07有一些相关的类,但它们是接口(和)。在和下还有一些包,它们似乎是表示Java抽象语法树的接口。 但是我找不到编译器源-有人知道它在哪里吗? 问题答案: 检查此站点Java编程语言编译器(javac)组。来源在Mercurial存储库中。 jdk7 / tl / langtools(对于JDK 1.7) jdk6 / j

  • 问题内容: 假设我对一种特定Linux实用程序(如)的源感兴趣。在哪里可以找到该实用程序的源代码? 问题答案: 我所做的是打字 然后走到最底下,找到“ GNU coreutils 6.10”。所以我用Google搜索了’coreutils’,然后…发现了刚刚链接到的网站joschi。

  • 本文向大家介绍餐馆点菜系统C语言源代码,包括了餐馆点菜系统C语言源代码的使用技巧和注意事项,需要的朋友参考一下 餐馆点菜系统c语言的源代码,一些封装的函数,对链表的操作,还有文件的存取,供大家参考,具体内容如下 更多学习资料请关注专题《管理系统开发》。 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。