Chi*_*hak 0 c linux windows system-calls
read()在Linux中使用与在Windows中使用有什么区别吗?
是否有可能在Windows中,它通常读取的次数少于我的要求,而在Linux中,它通常会读取我请求的数量?
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)对替换为单个换行符.返回值中只计算单个换行符.替换不会影响文件指针.
因此,您应该期望两个实现都返回少于请求的字节数.此外,在文本模式下阅读文件时有明显的区别.