【发布时间】:2016-10-01 14:02:39
【问题描述】:
如何在我的代码中最小化系统调用 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;
}
【问题讨论】:
-
使用更大的缓冲区。
-
但是文件的大小可以是50,但也可以是350。所以我不知道我最小化调用次数的缓冲区设置有多大。
-
缓冲区可以是任意长度。如果是 1K 字节,那么它将系统调用次数除以 1000。此外
read()为您提供读取的字节数,以防要读取的剩余字节小于缓冲区宽度。