【发布时间】:2019-12-23 10:17:34
【问题描述】:
在 64 位机器上,mmap 和 mmap64 之间有什么区别吗?
还有其他的比如fstat64 vs fstat。
回答: 在 64 位 Ubuntu 18 LTS 上, 验证 mmap 和 mmap64 func addr 是否相同。 off_t 和 off64_t 是 64 位的。
fstat/stat 能够返回 > 2 GiB 的文件大小。
代码:
#include <sys/mman.h>
#include <sys/stat.h>
#include <iostream>
using namespace std;
int main(){
cout << sizeof(off_t) << endl;
void* a = (void*)&mmap64;
void * b = (void*)&mmap;
cout << (a ==b) << endl; // same addr
a = (void*)&fstat64;
b = (void*)&fstat;
cout << (a==b) << endl; // diff addr but able to return > 2 GiB size
}
【问题讨论】:
标签: c linux linux-kernel system-calls mmap