Linux 如果我将count设置为大于通过read()syscall读取的文件大小,该怎么办?

Linux 如果我将count设置为大于通过read()syscall读取的文件大小,该怎么办?,linux,assembly,io,nasm,Linux,Assembly,Io,Nasm,我需要将常规文件读入内存,我不知道它的大小,但我知道它小于4096*1024*4字节 我能读一下吗(fd,addr,4096*1024*4) 事实上我已经做到了,所以我的系统调用读取的比我预期的要少。这是一种可预测的行为,还是我应该在代码中查找错误 您在一次通话中可以阅读的内容没有限制,除了 你需要一个足够大的缓冲区,而且你不能读取超过一个缓冲区末尾的内容 文件–罗斯岭9分钟前 我想出来了,我只需要更大的缓冲。这是可以预测的,而read只会返回实际读取的字节数。如果返回0,则表示您已到达文件末尾

我需要将常规文件读入内存,我不知道它的大小,但我知道它小于4096*1024*4字节

  • 我能读一下吗(fd,addr,4096*1024*4)
  • 事实上我已经做到了,所以我的系统调用读取的比我预期的要少。这是一种可预测的行为,还是我应该在代码中查找错误
    您在一次通话中可以阅读的内容没有限制,除了 你需要一个足够大的缓冲区,而且你不能读取超过一个缓冲区末尾的内容 文件–罗斯岭9分钟前


    我想出来了,我只需要更大的缓冲。

    这是可以预测的,而
    read
    只会返回实际读取的字节数。如果返回0,则表示您已到达文件末尾。另外,16MB是相当多的—想想是否真的需要在一个系统调用中实现所有这些。这里说,通常write()将计数字节写入常规文件,read()的工作方式是否相同?一个系统调用可以读取的大小是多少?在我的例子中,大约是7k,我不知道这个数字来自哪里。一次调用中可以读取的数量没有限制,只是需要足够大的缓冲区,并且不能读取超过文件结尾的内容。