Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Работа с большими файлами. / 10 сообщений из 10, страница 1 из 1
01.09.2014, 16:12
    #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
01.09.2014, 16:18
    #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
01.09.2014, 16:20
    #38734216
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с большими файлами.
#define _FILE_OFFSET_BITS 64 перед включением stdio.h.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
01.09.2014, 16:21
    #38734218
altcore
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с большими файлами.
Просто исходники писались под Linux и работают там. Я скомпилировал под Windows. Спасибо, попробую.
...
Рейтинг: 0 / 0
01.09.2014, 17:47
    #38734304
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с большими файлами.
altcore , в Windows FileAPI кардинально переработан и отличается от Linux/Unix поэтому
готовься к сюрпризам. И у некоторых опций в Windows может не быть аналога для Линукс
и наоборот.
...
Рейтинг: 0 / 0
01.09.2014, 19:30
    #38734382
altcore
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с большими файлами.
mayton altcore , в Windows FileAPI кардинально переработан и отличается от Linux/Unix поэтому
готовься к сюрпризам. И у некоторых опций в Windows может не быть аналога для Линукс
и наоборот.

Так и есть.

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

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


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



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

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


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