小编Lar*_*tin的帖子

为什么linux不能写入超过2147479552字节?

man 2 write部分NOTES包含以下注释:

在 Linux 上,write()(和类似的系统调用)最多传输 0x7ffff000 (2,147,479,552) 个字节,返回实际传输的字节数。(这在 32 位和 64 位系统上都是如此。)

  1. 这是为什么?
  2. 路径DESCRIPTION中有如下语句:

根据 POSIX.1,如果 count 大于 SSIZE_MAX,则结果是实现定义的

SSIZE_MAX远大于0x7ffff000. 为什么会有这个注释?

更新:感谢您的回答!如果有人感兴趣(为了更好的 SEO 来帮助开发人员),所有具有该限制的功能是:

  • read
  • write
  • sendfile

要找到这一点,只需全文搜索手册即可:

 % man -wK "0x7ffff000"
/usr/share/man/man2/write.2.gz
/usr/share/man/man2/read.2.gz
/usr/share/man/man2/sendfile.2.gz
/usr/share/man/man2/sendfile.2.gz
Run Code Online (Sandbox Code Playgroud)

c linux undefined-behavior

5
推荐指数
1
解决办法
959
查看次数

标签 统计

c ×1

linux ×1

undefined-behavior ×1