写系统调用,什么是字节数限制?
发布时间:2020-12-13 19:06:18 所属栏目:Linux 来源:网络整理
导读:写系统调用原型是: ssize_t write(int fd,const void *buf,size_t count); count参数是无符号的,返回值是有符号的. 帮助页面说: 成功时,返回写入的字节数(零表示没有写入). 出错时,返回-1,并正确设置errno. 但是,它没有说明count参数的限制是什么. 当count
写系统调用原型是:
count参数是无符号的,返回值是有符号的. 帮助页面说: 成功时,返回写入的字节数(零表示没有写入). 但是,它没有说明count参数的限制是什么. 考虑write是一个系统调用,可用于通用设备/文件/无论如何,如果设备支持大于SSIZE_MAX的写操作,则返回类型无法处理写入的实际字节数. 因此,能够传递无符号数量的字节并返回有符号数量的字节对我没有意义.为什么不通过签名号码? 感觉就像写入函数的原型一样容易出错,或者至少它在路径中留下了可能的漏洞. 有谁知道它的细节或在哪里可以找到这些信息? 最佳答案
我认为没有硬性限制,这取决于fd指向的内容.例如,如果它是文件系统上的文件,那么如果超过“最大文件大小限制”,文件系统驱动程序将会阻塞,返回EFBIG错误:
EFBIG尝试编写超出实现的文件 – (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |