函数_IO_file_init和_IO_file_fopen的定义

时间:2014-04-30 11:48:49

标签: c linux linux-kernel

我正在研究Linux中C库函数fopen()的实现,所以我检查了glibc源代码。在源代码中,我发现了如何实现fopen。但在fopen的实现中,两个函数被称为“_IO_file_init”和“_IO_file_fopen”。但是这些函数的定义不在glibc源代码中。

任何人都可以告诉我在哪里可以找到函数“_IO_file_init”和“_IO_file_fopen”的定义。

1 个答案:

答案 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。