【发布时间】:2014-11-22 09:33:53
【问题描述】:
这里是示例代码:
int nbajt; int buf[];
// we opened file and get descriptor fd
while ((nbajt = read(fd, buf, 5)) > 0) {
if (write(fd2, buf, nlbajt) == -1) {
perror("ERROR");
exit(1);
}
}
我不明白当我们使用 while 循环时它是如何工作的。这个循环会进行多少次? (buf 的长度的倍数?)。 nbajt 的值是否只有 1 或 0 + buf 文件位置会在每个循环步骤后更改 1 个位置?所以第一步我们有nlbajt = 1,我们把buf放在第一个位置char,然后把它写到fd2?。最后我们有nlbajt==0 所以这意味着它是文件的结尾?如果我错了,我将不胜感激。我主要关心的是 nbajt 值如何变化。这种态度有何不同:
nbajt = read(fd, buf, 5));
write(fd2, buf, sizeof(a));
【问题讨论】:
标签: c buffer system file-descriptor