【发布时间】:2019-08-11 05:48:35
【问题描述】:
为什么open 系统调用不需要像write 系统调用那样的缓冲区大小参数?
这两个系统调用如何区别对待它们的字符串参数?
open 系统调用是否假定路径参数以零结尾的字符串,而 write 系统调用不假定?如果是,为什么不一致?
为什么不让所有(或不)使用字符串/数组的系统调用都需要大小参数?
【问题讨论】:
-
这是一个正常的以 0 结尾的字符串,是的,而
write()可用于不是的数据。 -
open 需要一个以零结尾的文件名(零字节在文件名中无效)。 write 写入 二进制 数据,因此可能会出现零字节,因此不能用作缓冲区终止符
标签: c linux assembly system-calls api-design