如何在代码中最小化read()和write()的系统调用次数?
int copy(char* entry, char* exit){
char buf;
int in;
int out;
in = open(entry,O_RDONLY);
out = open(exit ,O_APPEND|O_WRONLY);
while(read(in, &buf, 1) != 0){
write(out, &buf, 1); }
close(in);
close(out);
return 0;
}
答案 0 :(得分:1)
假设您将缓冲区扩大到例如256,现在写:
char buf[256];
int n;
...
while((n=read(in, buf, sizeof(buf))) > 0){
write(out, buf, n);
}
每次读取时,读取最多256个字节。 read
返回读取的字节数,因此n
现在有这个数字,这就是你写的。最后一次读取将小于256,因此最后一次写入也将小于256。