如何最大限度地减少系统调用次数?在C.

时间:2016-10-01 14:02:40

标签: c copy

如何在代码中最小化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;

}

1 个答案:

答案 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。