注:記事に誤りがある場合は、メッセージを残して指摘してください。ご協力ありがとうございます。 名前 名前: lseek - 読み取り/書き込みファイルのオフセットを再配置する lseek 関数は、ファイルの読み取りと書き込みの変位を再配置するために使用されます。 ヘッダーファイルと関数宣言 #include <sys/types.h> #include <unistd.h> off_t lseek(int fd, off_t オフセット, int whence); オフセットが正の場合、ファイルの末尾に向かって移動します (前方に移動)。負の場合、ファイルの先頭に向かって移動します (後方に移動)。 説明する lseek() は、次のように whence ディレクティブに従って、ファイル記述子 fd に関連付けられたオープン ファイル記述のファイル オフセットを引数オフセットに再配置します。 lseek() を使用すると、ファイル オフセットをファイルの末尾を超えて設定できます (ただし、これによってファイルのサイズは変更されません)。この時点で後でデータが書き込まれると、ギャップ (「ホール」) 内のデータのその後の読み取りでは、ギャップにデータが実際に書き込まれるまで、ヌル バイト ('\0') が返されます。 lseek() 関数は、開いたファイルのオフセットを再配置します。オフセットは、offset パラメータと whence パラメータの組み合わせによって決定されます。 シークセット: テストコード: #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdlib.h> #include <stdio.h> #BUFFER_SIZE 1024 を定義します #define SRC_FILE_NAME "src_file" #define DEST_FILE_NAME "dest_file" //渡されたパラメータに応じてオフセットを設定します #OFFSET (atoi(args[1])) を定義します int main(int argc, char*args[]) { int src_file、dest_file; 符号なしcharバッファ[BUFFER_SIZE]; 実際の読み取り長さ、オフセット; (引数が2の場合){ fprintf(stderr, "使用法: %s オフセット\n", args[0]); 終了(-1); } src_file = open(SRC_FILE_NAME、O_RDONLY); dest_file = open(DEST_FILE_NAME, O_WRONLY | O_CREAT, S_IREAD | S_IWRITE); //所有者権限: rw (ソースファイル < 0 || 宛先ファイル < 0)の場合 { fprintf(stderr, "ファイルオープンエラー!\n"); 終了(1); } off_set = lseek(src_file, -OFFSET, SEEK_END); //ここでオフセットが否定されていることに注意してください printf("lseek() は src_file のファイル オフセットを返します: %d\n", off_set); real_read_len = read(src_file, buff, sizeof(buff)) > 0 である間、 書き込み(dest_file、バッファ、real_read_len); } dest_file を閉じます。 src_file を閉じます。 0を返します。 } 結果の解釈 dest_file ファイルと src_file ファイルのオフセットとサイズを観察すると、プログラムが lseek 関数を使用して src_file ファイル ポインターをファイルの末尾 + オフセットに再配置し (このプログラムはオフセットの反対の数、つまりファイルの末尾 + (-offset) を取得することに注意してください)、ファイルの末尾 + オフセットから dest_file へのファイルのコピーを開始することが簡単にわかります。 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: フロントエンド JavaScript でローカルあいまい検索機能を実装する方法の例
>>: MySQLで数千万のテストデータを素早く作成する方法
vueプロジェクトでは、アップロードした画像に透かしを追加して参照できるようにするアップグレード版...
Node.js では、.js ファイルは完全なスコープ (モジュール) です。したがって、var に...
DIVの背景は半透明ですが、DIV内の文字は半透明ではありませんコードをコピーコードは次のとおりです...
目次1. Vueフロントエンドを構成する1. クロスドメイン構成を開発する2. 本番環境のクロスドメ...
目次1. データベース操作2. データ型3. バックアップとリカバリ3. 操作4. 上級5. 知識補...
序文国家とは何か私たちは皆、React はステート マシンであると言います。それはどのように反映され...
序文日常生活で使用する論理的判断文には、if...else...、switch...case...、...
Macノードの削除と再インストール消去 ノード -v sudo npm アンインストール npm -...
目次ルーティングとは純粋コンポーネントの基本的な使用純粋なコンポーネントの使用に関する注意事項ルーテ...
require メソッドの読み込みルールキャッシュからの読み込みを優先するコアモジュールパス形式のモ...
目次1. Reactの基本的な理解1. はじめに2. Reactの特徴3. Reactが効率的な理由...
この記事では、centos7にyumを使用してMySQL 8.0.12をインストールする詳細な手順を...
ハイパーリンクはインターネット全体を接続していると言っても過言ではありません。ハイパーリンクは、別の...
zhangxinxu より https://www.zhangxinxu.com/wordpress...
MySQLで重複データを削除する詳細な例重複レコードには 2 つの意味があります。1 つは完全に重複...