以下是示例代码:
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));
答案 0 :(得分:2)
read()具有以下原型:
int read( int handle, void *buffer, int nbyte );
它返回成功读取的字节数。达到EOF时为0.-出现错误时为-1。
是nlbajt = 0
表示此处的EOF。