什么限制了内存映射文件的大小?我知道它不能超过最大的连续未分配地址空间块,并且应该有足够的可用磁盘空间.但还有其他限制吗?
目前我的硬限制为130688字节.如果我尝试在一条消息中发送更大的内容,我会收到ENOBUFS错误.
我检查了net.core.rmem_default,net.core.wmem_default,net.core.rmem_max,net.core.wmem_max和net.unix.max_dgram_qlen sysctl选项并将它们全部增加但是它们没有效果,因为它们处理了总缓冲区大小不是邮件大小.
我还设置了SO_SNDBUF和SO_RCVBUF套接字选项,但这与上面的问题相同.无论如何,默认套接字缓冲区大小都是根据_default套接字选项设置的.
我已经查看了在套接字堆栈中返回ENOBUFS的内核源代码,但我不清楚它来自何处.似乎只返回此错误的地方与无法分配内存有关.
最大尺寸实际上是130688吗?如果不能在没有重新编译内核的情况下进行更改?
谢谢!
我使用文件在 Python 和 Ruby 脚本之间进行通信。但是,我们有 mmap。这是我的问题。