glibc の fopen() で 'm' オプションを使う 最近の glibc の fopen() には 'm' というオプションがあると知りました。 'm' オプションを指定すると、リードオンリーでファイルを開いたとき、可能な場合、 mmap が内部的に使われるようになります。 次のようなプログラムに対して strace をかけると fgets() の内部的で read システムコールが呼ばれていることがわかります。 #include <stdio.h> #include <assert.h> int main() { char buf[1024]; FILE *fp = fopen("/etc/shells", "r"); // FILE *fp = fopen("/etc/shells", "rm"); // using mmap I/O assert(fp != NULL); f