美文网首页
【虚拟机】复制文件

【虚拟机】复制文件

作者: 秣禾 | 来源:发表于2020-06-11 22:58 被阅读0次
    粉色系卡带.gif

    复制文件有妙招,一段程序来搞定!

    实验任务

    编写一段程序,实现两个文件之间的复制,具体步骤如下:
    1、使用系统调用open()打开两个文件;
    2、利用系统调用read()将文件a中的内容读到缓冲区里;
    3、利用系统调用write()将缓冲区中的内容写到文件b中;
    4、利用系统调用close()把两个打开的文件关闭。

    复杂的文字让人昏昏欲睡!话不多说上程序:

    源代码

    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    void main(int argc, char* argv[])
    {
        if(argc!=1)
    {
        printf("1234567890\n");
        exit(0);
    }
        int w1 = open(argv[1], 0644);
        int w2 = open(argv[2], 0644);
        char ch;
        while(read(w1, &ch, 1))
    {
            write(w2, &ch, 1);
    }
        close(w1);
        close(w2);
    }
    

    结果图给你们看一下吧!嘿嘿!

    文件复制

    来一波知识点总结:

    1、Open,在使用文件之前,必须先打开文件。这个调用的目的是允许系统将属性和磁盘地址列表保存到主存中,用来以后的快速访问。
    2、Close,当所有进程完成时,属性和磁盘地址不再需要,因此应关闭文件以释放表空间。很多系统限制进程打开文件的个数,以此达到鼓励用户关闭不再使用的文件。磁盘以块为单位写入,关闭文件时会强制写入最后一块,即使这个块空间内部还不满。
    3、Read,数据从文件中读取。通常情况下,读取的数据来自文件的当前位置。调用者必须指定需要读取多少数据,并且提供存放这些数据的缓冲区。
    4、Write,向文件写数据,写操作一般也是从文件的当前位置开始进行。如果当前位置是文件的末尾,则会直接追加进行写入。如果当前位置在文件中,则现有数据被覆盖,并且永远消失。
    5、argc是命令行总的参数个数,argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数命令行后面跟的用户输入的参数。
    6、char argv[]是一个字符数组,其大小是int argc,主要用于命令行参数argv[]参数,数组里每个元素代表一个参数。

    相关文章

      网友评论

          本文标题:【虚拟机】复制文件

          本文链接:https://www.haomeiwen.com/subject/qzpptktx.html