lsof test在 Mac OS X 上运行时,我得到以下输出,其中test是内存映射文件的名称:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
filesyste 40535 buildbot txt REG 1,6 3 2466028 test
请注意,txt在FD字段中报告。但是,根据以下文档lsof:
FD is the File Descriptor number of the file or:
mem memory-mapped file;
txt program text (code and data);
那么问题来了:为什么是lsof报告txt而不是mem现场FD呢?
该文件映射如下:
mmap(0, length, PROT_READ, MAP_FILE | MAP_PRIVATE, fd, 0)
其中length是长度,fd是文件的描述符。