open相关函数练习---实现cp 功能

open:
作用:打开和创建文件;
#include<fcntl.h>
int open(constcharpathname,intflags);
int open(constchar
pathname,intflags,mode_t mode);
返回值:成功则返回文件描述符,否则返回-1
O_RDONLY只读模式
O_WRONLY只写模式
O_RDWR读写模式

read:
函数定义
ssize_t read [1] (int fd, void *buf, size_t count);
成功返回读取的字节数,出错返回-1并设置errno,如果在调read之前已到达文件末尾,则这次read返回0。
参数count是请求读取的字节数,读上来的数据保存在缓冲区buf中,同时文件的当前读写位置向后移

write:
write函数把buf中nbyte写入文件描述符handle所指的文档,成功时返回写的字节数,错误时返回-1.
:ssize_t write(int fd, const void *buf, size_t nbyte);
fd:文件描述符;
buf:指定的缓冲区,即指针,指向一段内存单元;
nbyte:要写入文件指定的字节数;
返回值:写入文档的字节数(成功);-1(出错)

#include "head.h"

int main(int argc, char **argv) {
    int fd, fd2;
    if((fd = open(argv[1], O_RDONLY)) < 0) {
        fprintf(stderr, "Error!\n");
        perror("open");
        exit(1);
    }
    if ((fd2 = open(argv[2], O_CREAT| O_RDWR, 0666)) < 0) {  //判断文件2权限是否存在 并 设定文件权限为664---
        perror("open");
        exit(1);
    }
    while(1){
        char buff[512] = {0};
        ssize_t size = read(fd, buff, sizeof(buff)); //实现读入;
        printf("%s", buff); // 将读入的内容打印;
        write(fd2, buff, size); // 将读入的内容再写入文件2;
        if(size <= 0) {
            break;
        }
    }
    
    
    close(fd);
    close(fd2);// 关闭文件1和2;
    perror("open2");
    return 0;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值