ubuntu,debian,redhat,fedora,centos
标签类目:open

fopen和open的具体区别

分类:C/C++1、open 是系统调用 返回的是文件句柄,文件的句柄是文件在文件描述副表里的索引,fopen是C的库函数,返回的是一个指向文件结构的指针。

2、fopen的实现要调用open, 关键看你想返回什么了, FILE指针还是描述符?

3、32位环境下,编译加“-D_FILE_OFFSET_BITS=64” 要在open里加O_LARGEFILE标记

  1. static int ext2_open_file (struct inode * inode, struct file * filp)
  2. {
  3. if (!(filp->f_flags & O_LARGEFILE) &&
  4.        inode->i_size > 0x7FFFFFFFLL)
  5. return -EFBIG;
  6. return 0;
  7. }

0x7FFFFFFF就是2G-1。 看一下这个逻辑, 就知道open时必须制定O_LARGEFILE.

继续阅读 »

返回顶部