わかりましたので、私は 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 がどのように役立つかについても確信が持てません。それとも、これを過度に複雑にして、完全に間違った方向に進んでいますか?