【发布时间】:2015-08-25 20:07:02
【问题描述】:
必须吗?我一直对这类东西很模糊,但如果我有类似的东西:
char buf[256];
read(fd, buf, 256);
write(fd2, buf, 256);
除了那些函数返回 -1 的情况之外,这里是否有可能出错?
如果它只读取 40 个字符,它会在后面加上 \0 吗? (并且会写识别 \0 并停止? 另外,如果要读取 256 个字符,那 256 个字符后面有 \0 吗?
【问题讨论】:
-
没有。
read(2)不会添加零终止符,即使它只能读取少于请求的字节数。 -
当你有这样的疑问时,最快最可靠的方法就是阅读文档。有在线资源,有手册页等。
-
据我所知,除了实际读取的数据之外,标准对 buf 的内容没有任何评论。也许我们需要一个[语言律师]。不过,将任何东西放在那里是非常不寻常的。
-
@alk 未记录的内容未定义。
-
需要使用
read的返回值...bytesread = read(fd, buf, 256); write(fd, buf, bytesread);
标签: c unix io posix unbuffered