在Mac OS X上运行lsof test
时,我得到以下输出,其中test
是内存映射文件的名称:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
filesyste 40535 buildbot txt REG 1,6 3 2466028 test
请注意,txt
字段中会报告FD
。但是,根据documentation of 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
是文件的描述符。