写系统调用,什么是字节数限制?

Mar*_*cus 8 c linux types

写系统调用原型是:

ssize_t write(int fd, const void *buf, size_t count);
Run Code Online (Sandbox Code Playgroud)

count参数是无符号的,返回值是有符号的.

帮助页面说:

成功时,返回写入的字节数(零表示没有写入).出错时,返回-1,并errno进行适当设置.

但是,它没有说明count参数的限制是什么.当计数大于时,它仍然没有说出行为SSIZE_MAX.

考虑write是一个系统调用,可用于通用设备/文件/无论如何,如果设备支持大于SSIZE_MAX的写操作,则返回类型无法处理写入的实际字节数.

因此,能够传递无符号数量的字节并返回有符号数量的字节对我没有意义.为什么不通过签名号码?

感觉就像写入函数的原型一样容易出错,或者至少它在路径中留下了可能的漏洞.

有谁知道它的细节或在哪里可以找到这些信息?

Sim*_*HAU 0

我想请记住系统分配给函数的字节数。但我不确定。也许您应该尝试 size_t 和 ssize_t 手册页。