用系统调用编写复制函数.c

#include
#include
#include
#include
#include
#include
#include

// 运行时需两个参数,一个是源文件,一个是目标文件

int main(int argc, char* argv[]) {
    char *src_file;
    char *dest_file;
    int src_fd;
    int dest_fd;
    char buff[256];
    int ret;

    //检查参数
    if (argc != 3) {
        perror("需输入连个参数\n");
        exit(1);
    }

    //取出源文件名和目标文件名
    src_file = argv[1];
    dest_file = argv[2];

    //打开源文件
    src_fd = open(src_file, O_RDONLY);
    if (src_fd < 0) {
        perror("源文件打开失败");
    }

    //打开目标文件
    dest_fd = open(dest_file, O_WRONLY|O_CREAT, 0666);
    if (dest_fd < 0) {
        perror("目标文件打开失败");
    }
    while (1) {
        ret = read(src_fd, buff, sizeof(buff));
        if (ret < 0) {
            perror("读取文件失败");
            exit(0);
        }

        ret = write(dest_fd, buff, ret);
        if (ret < 0) {
            perror("写文件失败");
            exit(1);
        }
        else if (ret == 0){
            sleep(1);
        printf("写入结束\n");
        break;
        }
    }

    //关闭文件描述符
    close(src_fd);
    close(dest_fd);

    return 0;
}
//运行时需两个参数

你可能感兴趣的:(编程)