powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Работа с большими файлами.
10 сообщений из 10, страница 1 из 1
Работа с большими файлами.
    #38734205
altcore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Неверно определяется размер у больших файлов.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>

#define O_LARGEFILE 0100000

#define SCOOP_SIZE      64
#define PLOTSIZE        262144
#define S_IROTH 0004
#define S_IRGRP 0040 
...

        int fh = open(argv[1], O_LARGEFILE | O_RDONLY);

        if(fh < 0) {
                printf("File %s not found\n", argv[1]);
                exit(-1);
        }

        struct stat sh;
        fstat(fh, &sh);

        unsigned long long int expect = (unsigned long long int)nonces * PLOTSIZE;

        if(((long long) sh.st_size) != expect) {
                printf("File not complete. Expected size: %llu, actual size: %llu\n", expect, (long long) sh.st_size);
                exit(-1);
        }
...



В sh.st_size неверное одинаковое значение, другие атрибуты файла читаются верно.
...
Рейтинг: 0 / 0
Работа с большими файлами.
    #38734210
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут пишут

http://www.mkssoftware.com/docs/man3/stat.3.asp The fstat64(), lstat64(), and stat64() functions are identical to the fstat(), lstat() and stat() functions except that they take a pointer to struct stat64 instead of struct stat. This permits applications to determine the size of a file that is larger than 2 gigabyes.
...
Рейтинг: 0 / 0
Работа с большими файлами.
    #38734216
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
#define _FILE_OFFSET_BITS 64 перед включением stdio.h.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Работа с большими файлами.
    #38734218
altcore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Просто исходники писались под Linux и работают там. Я скомпилировал под Windows. Спасибо, попробую.
...
Рейтинг: 0 / 0
Работа с большими файлами.
    #38734304
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
altcore , в Windows FileAPI кардинально переработан и отличается от Linux/Unix поэтому
готовься к сюрпризам. И у некоторых опций в Windows может не быть аналога для Линукс
и наоборот.
...
Рейтинг: 0 / 0
Работа с большими файлами.
    #38734382
altcore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton altcore , в Windows FileAPI кардинально переработан и отличается от Linux/Unix поэтому
готовься к сюрпризам. И у некоторых опций в Windows может не быть аналога для Линукс
и наоборот.

Так и есть.

Вопрос с определением размера файла решился использованием _filelengthi64
...
Рейтинг: 0 / 0
Работа с большими файлами.
    #38734385
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
altcoreВопрос с определением размера файла решился использованием _filelengthi64

Хочешь сказать, что макрос, приведённый выше, не сработал?.. Какой компилятор используешь?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Работа с большими файлами.
    #38734412
altcore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovХочешь сказать, что макрос, приведённый выше, не сработал?.. Какой компилятор используешь?


Еще до вашего поста я пробовал много всего, типа:
Код: plaintext
1.
2.
3.
#define _LARGEFILE_SOURCE
#define _FILE_OFFSET_BITS 64
#define __USE_LARGEFILE64



Но для больших файлов(>2Gb?) размер не определялся верно.
...
Рейтинг: 0 / 0
Работа с большими файлами.
    #38734414
altcore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gcc из mingw.
...
Рейтинг: 0 / 0
Работа с большими файлами.
    #38734422
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
altcoreдля больших файлов(>2Gb?) размер не определялся верно.
А у меня твоим же кодом размер определяется верно. Файл больше шести гиг мне было лень
создавать, но на этом размере проблем не было.

g++.EXE (tdm64-1) 4.7.1
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Работа с большими файлами.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]