我正在研究Linux中C库函数fopen()
的实现,所以我检查了glibc源代码。在源代码中,我发现了如何实现fopen。但在fopen的实现中,两个函数被称为“_IO_file_init
”和“_IO_file_fopen
”。但是这些函数的定义不在glibc源代码中。
任何人都可以告诉我在哪里可以找到函数“_IO_file_init
”和“_IO_file_fopen
”的定义。
答案 0 :(得分:0)
实现在文件Fileops.c中。请注意_IO_new_file_fopen是_IO_file_fopen的别名。
_IO_FILE *
_IO_new_file_fopen (fp, filename, mode, is32not64)
_IO_FILE *fp;
const char *filename;
const char *mode;
int is32not64;
{
int oflags = 0, omode;
int read_write;
int oprot = 0666;
int i;
_IO_FILE *result;
#ifdef _LIBC
const char *cs;
const char *last_recognized;
#endif
if (_IO_file_is_open (fp))
return 0;
switch (*mode)
{
case 'r':
omode = O_RDONLY;
...
}
顺便说一下,我正在看glic-2.19。