ssize_t read(int fd, void *buf, size_t count);
返回值是带符号的 ssize_t,代表此次 read 实际读取的字节数。 第三个参数是不带符号的 size_t,代表此次希望读取的字节数。
显然 size_t 的最大值是 ssize_t 的两倍,可以假设 size_t 的最大值是 255,ssize_t 的最大值是 127,如果在 read 函数的第三个参数中填 200,是不是代表 read 最多只能读取 127 字节数据?如果是的话,感觉 linux 这么设计有点不合理啊,感觉和所见即所得原则有点违背。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.