0

ファイルを作成し、システム コール操作によって 256 MB サイズのランダムな文字をコピーしようとしていますが、どうすればよいのかわかりません。

明らかに、ファイルはtxtファイルである必要があるため、O_RDWRフラグを指定してcreat関数を使用しようとしたが、txtファイルが作成されなかった場合、開くことができなかった不明なものでした。PERMS のことを Web で見ましたが、理解できませんでした。これは私がこれまでに書いたものです:

char buff[1024*1024]; 
j=0;
for (i=0;i<(1024*1024);i++){
    if (j==256) j=0;

    buff[i]='a'+j;

    j++;
}

fd= open(argv[1], O_RDWR);
if (fd < 0) { 
    fd= creat(argv[1],O_RDWR);
    for (i=0; i<256; i++) {
        write(fd, buff, 1024*1024);
    }

ファイルは作成されますが、アクセスできず、サイズは 0 です。

4

2 に答える 2

1

の 2 番目の引数はcreat()の と同じではありませんopen()

定数O_RDWRは 2 として定義されており、ファイル モード ビットとして誤って解釈されます。これは、ファイルを読み取ることができないことを意味します。

于 2012-10-30T06:52:16.123 に答える
0

プログラムのロジックを確認してください。if (fd < 0)は false であり、write()実行されることはありません。

于 2012-11-01T06:20:29.273 に答える