問題タブ [lseek]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
51 参照

c - lseek の予期しない動作

lseekファイルのサイズを見つけるためだけに使用してlseekおり、ファイルの実際のサイズよりも少ないバイトを返します。コードは正しいと思いますが、なぜそれが起こるのか説明できません。

初めてプログラムを実行したとき、うまくいきました。次に、ファイルにデータを追加して、サイズを変更しました。それ以来、新しいファイルでプログラムを再度実行すると、結果は常に古いファイルのサイズになります。

どんな助けでも大歓迎です!

0 投票する
2 に答える
258 参照

c - Cでファイルをバイトごとにコピーする方法

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

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

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

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