【发布时间】:2015-09-19 18:25:57
【问题描述】:
我想知道当编译器在 C 程序中遇到“fopen()”时会发生什么。 调用“开放”系统调用的函数在哪里? 我看到 fopen() 是在 stdio.h 中声明的,但我找不到它的实现位置!! 我想看看系统调用号和其他系统调用参数写入CPU寄存器的位置。
谢谢。
【问题讨论】:
-
它在您的标准库中实现。你用的是什么系统和编译器?
-
这取决于您的平台。 glibc 很常见,但还有很多其他的。
-
我在 linux kernel 4.0.9 上使用 gcc
-
下载 glibc 源码并阅读。不过,这不是一件容易的事。
-
内核在这里不是特别相关:这是一个用户空间库,有许多可能的选择供发行版使用。事实上,一些发行版提供了一种选择。
标签: c system-calls