0

我最近开始阅读cat.c并且对函数感到困惑io_blksize,该函数定义如下:

static inline size_t
io_blksize (struct stat sb)
{
   return MAX (IO_BUFSIZE, ST_BLKSIZE (sb));
}

enum { IO_BUFSIZE = 128*1024 };
#define DEV_BSIZE   4096
#define ST_BLKSIZE  (statbuf)      DEV_BSIZE

现在,问题io_blksize似乎总是 return IO_BUFSIZE,为什么不直接定义函数:

static inline size_t
io_blksize (struct stat sb)
{
   return IO_BUFSIZE;
}

在宏ST_BLKSIZE中参数的作用是sb什么?ST_BLKSIZE(sb)似乎4096总是回来。

4

1 回答 1

1

io_blksize() 返回至少 128KiB,但在 NFS 上的某些情况下它可能更大。128KiB 值背后的原因详见https://github.com/coreutils/coreutils/blob/master/src/ioblksize.h#L23-L57

于 2015-12-28T14:58:25.550 回答