读取Linux与Windows的系统

时间:2017-04-28 08:59:36

标签: c linux windows system-calls

在Linux中使用read()与在Windows中使用是否有任何区别?

是否有可能在Windows中,它的读取次数通常少于我的要求,而在Linux中它通常读取的次数与我的要求相同?

1 个答案:

答案 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)对被替换为单个换行符。返回值中只计算单个换行符。替换不会影响文件指针。

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