0

システムコールでストレージを事前に割り当てたいfcntl。これを行うための私のコードは次のとおりです。

fstore_t store = {F_ALLOCATECONTIG, F_PEOFPOSMODE, 0, length, 0};
int ret = fcntl(fd, F_PREALLOCATE, &store);
if (ret == -1) {
    store.fst_flags = F_ALLOCATEALL;
    ret = fcntl(fd, F_PREALLOCATE, &store);
}

変数ret-1、そのコードを実行した後ではありません。fstat同じファイル ハンドルを呼び出してファイル サイズを取得すると、 stat.st_size = 0. しかし、値store.fst_bytesallocは の値と同じですlength
どうすればいいですか?電話すると

ftruncate(fd, length);

穴のあるファイルを取得するのですか、それとも穴のない「実際の」ファイルですか? 2つ目は私の目標です。

4

1 に答える 1