• read/write系统调用


    /*拷贝文件内容实例
    read系统调用、write系统调用
    ssize_t read(int fd, void *buf, size_t count);
    ssize_t write(int fd, const void *buf, size_t count);//将数据写到一个文件中

    一、read、write

    一旦有了与一个打开文件描述符像连的文件描述符,只要该文件是用O_RDONLY或O_RDWD标志打开的,就可以用read()系统调用从该文件读取字节

    ssize_t   read(int fd, void* buf, size_t count);

    fd: 要读取得文件描述符。  buf: 指向内存块的指针,从文件读取来的字节放到这个内存块中。   count: 从该文件读取到buf中的字节数

    返回值:若出错,返回-1;读文件结束,返回0;否则返回从该文件复制到规定缓冲区中的字节数。

    ssize_t  write(int fd, const void * buf ,size_t count);

    fd:要写入文件的描述符。  buf: 指向内存块的指针。 count: 要写入文件的字节数

    返回值:如果出现错误,返回-1;如果写入成功,则返回写入到文件的字节数。

    */
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    #include<errno.h>
    #include<unistd.h>
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    //#define ERR_EXIT(m)  (perror(m),exit(EXIT_FAILURE))
    #define ERR_EXIT(m)
        do
        {
            perror(m);
            exit(EXIT_FAILURE);
        }while(0)  //宏要求一条语句
    int main(int argc,char *argv[])//  ./0703_5  src  dest
    {
        int infd;
        int outfd;
        if(argc!=3)
        {
            fprintf(stderr,"Usage %s src dest ",argv[0]);
            exit(EXIT_FAILURE);
        }
        if((infd=open(argv[1],O_RDONLY))==-1)
                ERR_EXIT("open src error");
        if((outfd=open(argv[2],O_WRONLY|O_CREAT|O_TRUNC,0644))==-1)
                ERR_EXIT("open dest error");

        char buf[1024];//不一定读到1024,每次读后,数据指针都会偏移
        ssize_t nread;//头文件<sys/types.h>
        while((nread=read(infd,buf,1024))>0) //读到文件末尾返回0跳出循环
        {
            write(outfd,buf,nread);//int fsync(int fd) 。不一定读到磁盘文件中了,可以用fsync 同步到磁盘中
        }
        close(infd);
        close(outfd);
        return 0;
    }

  • 相关阅读:
    Android TP出现小圆点解决方法
    Android的SAFE MODE(安全模式)
    Linux TCP透传到OneNET
    C读取BMP数据
    OLED显示BMP数据
    电脑出现DNS错误无法上网怎么办
    办公室如果没有网络怎么办呢?
    微信扫一扫获取地理位置
    win10系统程序与功能查找,卸载程序
    手把手学习数据库
  • 原文地址:https://www.cnblogs.com/wsw-seu/p/8280432.html
Copyright © 2020-2023  润新知