在Linux中使用read()
与在Windows中使用是否有任何区别?
是否有可能在Windows中,它的读取次数通常少于我的要求,而在Linux中它通常读取的次数与我的要求相同?
答案 0 :(得分:5)
read
不是标准的c函数。从历史上看,它是一个posix系统调用,因此,窗口(假设窗口意味着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,在这种情况下,每个回车换行符(CR-) LF)对被替换为单个换行符。返回值中只计算单个换行符。替换不会影响文件指针。
因此,您应该期望两个实现都返回少于请求的字节数。此外,在文本模式下阅读文件时有明显的区别。