首页 > 试题广场 >

编写一个C程序mmapcopy.c, 使用mmap将一个任

[问答题]
编写一个C程序mmapcopy.c,  使用mmap将一个任意大小的磁盘文件复制到stdout。  输入文件的名字必须作为一个命令行参数来传递。
#include <stdio.h>
#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/mman.h>
#include <stdlib.h>

int main(int argc,char* argv[]){
    if(argc!=2){
        char s[30];
        sprintf(s,"使用方法: %s 文件名\n",argv[0]);
        fputs(s,stderr);
        exit(1);
    }

    struct stat statbuf;

    int fd = open(argv[1],O_RDONLY);
    stat(argv[1],&statbuf);
    // 获取文件大小
    int length = statbuf.st_size;

    void* bufp = mmap(NULL,length,PROT_READ,MAP_SHARED,fd,0);
    int len = write(1,bufp,length);

    close(fd);
    munmap(bufp,length);
    return 0;
}
欢迎访问我的博客
编辑于 2021-11-04 15:09:36 回复(0)