为什么 lsof 在 Mac 上将内存映射文件的文件描述符报告为 txt 而不是 mem?

vit*_*aut 8 macos mmap lsof memory-mapped-files

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
Run Code Online (Sandbox Code Playgroud)

请注意,这txt是在FD现场报告的。但是,根据文档lsof

   FD         is the File Descriptor number of the file or:

                   mem  memory-mapped file;
                   txt  program text (code and data);
Run Code Online (Sandbox Code Playgroud)

那么问题来了:为什么是lsof报道txt而不是mem现场FD

该文件映射如下:

mmap(0, length, PROT_READ, MAP_FILE | MAP_PRIVATE, fd, 0)
Run Code Online (Sandbox Code Playgroud)

其中length是长度,fd是文件的描述符。