mmapを利用して、効率良くファイルをコピー。通常ファイルが標準入力にリダイレクトされていることを想定。
#include < sys/mman.h > #include < sys/types.h > #include < unistd.h > #include < stdio.h > int main(){ off_t p, file_size; size_t pagesize, len; char *mp; pagesize = getpagesize(); if ((file_size = lseek(0, 0, SEEK_END))<0){ perror("lseek"); return 1; } len = pagesize; for(p = 0; p < file_size; p += len){ if (file_size - p < pagesize){ len = file_size - p; } if ((mp = mmap(0, len, PROT_READ,MAP_PRIVATE, 0, p))== MAP_FAILED){ perror("mmap"); return 1; } write(1, mp, len); if (munmap(mp, len)< 0){ perror("munmap"); return 1; } } return 0; }