【问题标题】:read system in Linux vs Windows在 Linux 与 Windows 中读取系统
【发布时间】:2017-09-26 08:00:29
【问题描述】:

在 Linux 中使用 read() 与在 Windows 中有什么区别吗?

有没有可能在 Windows 中,它通常会比我请求的要少,而在 Linux 中,它通常会像我请求的那样多?

【问题讨论】:

    标签: c linux windows system-calls


    【解决方案1】:

    read 不是标准的 c 函数。从历史上看,它是一个 posix 系统调用,因此,windows(假设 windows 意味着 MSVC)根本不需要实现它。尽管如此,他们还是尝试了。我们可以比较这两种实现:

    Linux:

    http://man7.org/linux/man-pages/man2/read.2.html

    成功时,返回读取的字节数(零表示结束 文件),并且文件位置由这个数字提前。它是 如果此数字小于字节数,则不是错误 要求;这可能会发生,例如,因为更少的字节 现在实际可用(也许是因为我们接近尾声 文件,或者因为我们正在从管道或终端读取),或者 因为 read() 被信号打断了。另见注释。

    窗口:

    https://msdn.microsoft.com/en-us/library/ms235412.aspx

    https://msdn.microsoft.com/en-us/library/wyssk1bs.aspx

    _read 返回读取的字节数,如果文件中剩余的字节数少于 count,或者文件以文本模式打开,则可能小于 count,在这种情况下,每个回车换行符(CR- LF) 对被替换为单个换行符。返回值中仅计算单个换行符。替换不影响文件指针。

    因此,您应该期望两种实现都返回少于请求的字节数。此外,在文本模式下读取文件时有明显的区别。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-06
      • 1970-01-01
      • 2012-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-09
      • 1970-01-01
      相关资源
      最近更新 更多