深入理解计算机系统--系统级I/O

    在Linux系统中,read和write传送的字节比应用程序要求的要少。这些不足值不表示有错误,出现这种问题的原因有:

  • 读时遇到了EOF。假设我们准备读取一个文件,该文件从当前位置开始只有20个字节,而我们以50个字节的片进行读取。这样一来,下一个read返回的不足值为20,此后的read将通过返回不足值0来发出EOF信号。
  • 从终端读文本行。如果打开文件是与终端相关联的(比如键盘和显示器),那么每个read函数将一次传送一个文本行,返回的不足值等于文本行的大小。
  • 读和写网络套接字。如果打开的文件对应于套接字,那么内部缓冲约束和较长的网络延迟会引起read和write返回不足值。对于Unix管道调用read和write时,也有可能出现不足值。

你可能感兴趣的:(I/O)