Linuxcpコマンドの実装

CPコマンド

この記事では、Linuxcpコマンドを実装するためのコードを示します。


 

記事のディレクトリ

 


序文

Linuxのコマンドがコマンドの機能をどのように実装するのか疑問に思ったことはありませんか?ここでコードを紹介します。

 

1.CPコマンドを実現するというアイデア

ファイルの内容を既存のファイルにコピーする、または新しく作成したファイルにコピーするには、最初のステップ:コピーするファイルを開く; 2番目のステップ:ファイルをバッファー領域にコピーする; 3番目のステップ:開いて作成する新しいファイル;ステップ4:バッファ領域の内容を新しく作成されたファイルに書き込みます;ステップ5:ファイルを閉じます

第二に、ステップ

1.ライブラリを紹介します

コードは次のように表示されます。

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>


 

2.CPコマンドを実装するためのコード

コードは次のように表示されます。

int main(int argc,char **argv)
{
        int fdSrc;
        int fdDes;
        char *readBuf = NULL;

    //判断使用该命令的方式是否正确 
        if(argc != 3){
                printf("param error\n");
                exit(-1);
        }

    //第一步:打开待复制的文件
        fdSrc = open(argv[1],O_RDWR);
        int size = lseek(fdSrc,0,SEEK_END);
        lseek(fdSrc,0,SEEK_SET);    //将光标移动待文件开头
    
    //第二步:将待复制的文件读取到缓存区 readBuf
        readBuf = (char *)malloc(sizeof(char)*size+8);
        int n_read = read(fdSrc,readBuf,size);

    //第三步:打开或者新创建一个文件
        fdDes = open(argv[2],O_RDWR|O_CREAT|O_TRUNC,0600);
    
    //第四步:将缓存区里的内容写入到新打开或者创建的文件中
        int n_write = write(fdDes,readBuf,size);

    //第五步:关闭文件,以达到保护文件的作用
        close(fdSrc);
        close(fdDes);
        return 0;
}


 


総括する

コマンドがどのように実装されているかを知った後、open()、read()、write()などの関数に興味がありますか?これらの関数はこれらの関数をどのように実装しますか?

おすすめ

転載: blog.csdn.net/weixin_49472648/article/details/108891328