写系统调用原型是:
ssize_t write(int fd,const void *buf,size_t count);
count参数是无符号的,返回值是有符号的.
帮助页面说:
成功时,返回写入的字节数(零表示没有写入).
出错时,返回-1,并正确设置errno.
但是,它没有说明count参数的限制是什么.
当count大于SSIZE_MAX时,它仍然没有说出行为.
考虑write是一个系统调用,可用于通用设备/文件/无论如何,如果设备支持大于SSIZE_MAX的写操作,则返回类型无法处理写入的实际字节数.
因此,能够传递无符号数量的字节并返回有符号数量的字节对我没有意义.为什么不通过签名号码?
感觉就像写入函数的原型一样容易出错,或者至少它在路径中留下了可能的漏洞.
有谁知道它的细节或在哪里可以找到这些信息?
最佳答案
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。