-1

わかりましたので、私は C を勉強しています。教科書には、この演習につながる読者向けの演習が残されています。本では、ファイル (または少なくとも通常のファイル) は単なるバイト配列であると説明されています。Linux では各ブロックが 512 バイトであることを理解していますが、ファイルをファイル記述子に読み込むと、プログラムはファイル全体を自動的にロードする可能性がありますか? この本は、Linux システム コールread, write, and lseek(いくつかの基本的な低レベル コール) について説明しています。

今の目標は、ファイルをバイトごとにランダムな新しいファイルにコピーすると言ったようなものです。擬似コードは完全に受け入れられます。いずれにせよ、あなたが必要であることは私の理解です

私の理解では、ビルドは次のようになります。

#include <all of the req'd headers>

int main(int argc,char** argv) {
    char buff[1]; // byte by byte buffer 
    inf fd = open("filename", O_RDONLY);
    
    int fdp[2]; // for the pipe's fd's
    pipe(fdp);
    
    if( fork() == 0 ) {
        close(fdp[0]);
        
    }

    else {
        write("newfile", buff, 1);
    }

}

少なくとも現段階の私にとって、これは非常に複雑な問題です。私の考えは、ファイル記述子にファイルの内容全体を読み込み、パイプを使用してバイトごとに新しいファイルに書き込み、前のファイルの内容全体を新しいファイルにコピーすることです。また、この状況で lseek がどのように役立つかについても確信が持てません。それとも、これを過度に複雑にして、完全に間違った方向に進んでいますか?

4

2 に答える 2