ファイルにヌルバイトをパディングしている場合、私の推測はchar *
Cでファイルを操作していることです。この場合、ファイルにヌルバイトをパディングする必要はなく、最後にヌルバイトを追加するだけですファイルのランダムなバイトでパディングするだけで十分かもしれません。この場合、Cプログラムは非常に効率的です(2番目のパラメーターよりも小さいファイルでのみ使用します。そうしないと、データが上書きされます)。lseek
関数定義で次のように記述されているため、必要な処理(ヌルバイトでパディング)を行うこともできます。
lseek()関数は、ファイル内の既存のデータの終わりを超えてファイルオフセットを設定できるようにします。この時点でデータが後で書き込まれる場合、ギャップ内のデータの後続の読み取りは、データが実際にギャップに書き込まれるまで、値0のバイトを返します。
この場合、第一の呼び出しにlseek
してwrite
除去することができました。しかし、テストは最初にシステムで行う必要があります...
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
/* 1st parameter: a file name, 2nd parameter: a file size. */
int main(int argc, char ** args) {
int nfd = open(args[1], O_WRONLY);
lseek(nfd, 0, SEEK_END);
write(nfd, "\0", 1);
lseek(nfd, atoi(args[2]) - 1, SEEK_SET);
write(nfd, "\0", 1);
close(nfd);
return 0;
}