<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: fopen и open не открывают файлы больше двух ГБ</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8562.html</link>
    <description>Собственно, проблема в заголовке. Следующий код:&lt;br&gt;FILE *input = fopen(file_path, &quot;rb&quot;);&lt;br&gt;успешно открывает файлы, но не более 2-х Гб, для которых fopen возвращает ноль.&lt;br&gt;&lt;br&gt;Та же проблема, если использовать open:&lt;br&gt;int input = open(file_path, O_RDONLY);&lt;br&gt;open возвращает -1.&lt;br&gt;&lt;br&gt;Компилирую так:&lt;br&gt;gcc -std=c99 main.c&lt;br&gt;&lt;br&gt;Uname -a:&lt;br&gt;2.6.31-14-generic #48-Ubuntu SMP Fri Oct 16 14:04:26 UTC 2009 i686 GNU/Linux&lt;br&gt;&lt;br&gt;gcc version 4.4.1&lt;br&gt;&lt;br&gt;Уже с ног сбился, гуглил до посинения, нигде не встречал подобных тем, чтобы у кого-то такая проблема была.&lt;br&gt;</description>

<item>
    <title>fopen и open не открывают файлы больше двух ГБ (аноним)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8562.html#9</link>
    <pubDate>Mon, 21 Dec 2009 13:55:43 GMT</pubDate>
    <description>&amp;gt;Ну это вы так думаете. А в linux не ломают syscall без &lt;br&gt;&amp;gt;веской причины. И программы написанные для 2.0 отлично работают и на &lt;br&gt;&amp;gt;2.6 ядре. &lt;br&gt;&lt;br&gt;А, ну да, ну да.&lt;br&gt;</description>
</item>

<item>
    <title>fopen и open не открывают файлы больше двух ГБ (svn)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8562.html#8</link>
    <pubDate>Mon, 21 Dec 2009 11:46:34 GMT</pubDate>
    <description>&amp;gt;про системный API. Во FreeBSD off_t 64битный и костылей типа O_LARGEFILE &lt;br&gt;&amp;gt;и lseek64 просто нет, потому что не нужны. &lt;br&gt;&lt;br&gt;Ну это вы так думаете. А в linux не ломают syscall без веской причины. И программы написанные для 2.0 отлично работают и на 2.6 ядре.&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>fopen и open не открывают файлы больше двух ГБ (аноним)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8562.html#7</link>
    <pubDate>Mon, 21 Dec 2009 09:35:05 GMT</pubDate>
    <description>&amp;gt;int fseek(FILE *stream, long offset, int whence); &lt;br&gt;&amp;gt;Действительно, очень интересно почему в FreeBSD это вдруг заработает )) &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Установка макроса говорит что ты знаешь что делаешь, и не собираешься пользоваться &lt;br&gt;&amp;gt;fseek. &lt;br&gt;&lt;br&gt;Я не про yблюдский stdio, с ним и так все понятно, а про системный API. Во FreeBSD off_t 64битный и костылей типа O_LARGEFILE и lseek64 просто нет, потому что не нужны.&lt;br&gt;</description>
</item>

<item>
    <title>fopen и open не открывают файлы больше двух ГБ (Аноним)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8562.html#6</link>
    <pubDate>Sun, 20 Dec 2009 22:34:46 GMT</pubDate>
    <description>&amp;gt;Мне вот интересно, почему под FreeBSD никаких проблем с этим нет - &lt;br&gt;&amp;gt;без всяких костылей обычные open и seek работают с терабайтными файлами &lt;br&gt;&amp;gt;и 64битными смещениями. А у нас этот маразм. &lt;br&gt;&lt;br&gt;int fseek(FILE *stream, long offset, int whence);&lt;br&gt;Действительно, очень интересно почему в FreeBSD это вдруг заработает ))&lt;br&gt;&lt;br&gt;Установка макроса говорит что ты знаешь что делаешь, и не собираешься пользоваться fseek.&lt;br&gt;</description>
</item>

<item>
    <title>fopen и open не открывают файлы больше двух ГБ (аноним)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8562.html#5</link>
    <pubDate>Sun, 20 Dec 2009 18:39:31 GMT</pubDate>
    <description>Мне вот интересно, почему под FreeBSD никаких проблем с этим нет - без всяких костылей обычные open и seek работают с терабайтными файлами и 64битными смещениями. А у нас этот маразм.&lt;br&gt;</description>
</item>

<item>
    <title>fopen и open не открывают файлы больше двух ГБ (Phantom Lord)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8562.html#4</link>
    <pubDate>Sat, 19 Dec 2009 17:38:01 GMT</pubDate>
    <description>Спасибо всем за помощь! Помогло добавление опции -D_FILE_OFFSET_BITS=64.&lt;br&gt;</description>
</item>

<item>
    <title>fopen и open не открывают файлы больше двух ГБ (jd)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8562.html#3</link>
    <pubDate>Sat, 19 Dec 2009 16:37:00 GMT</pubDate>
    <description>&amp;gt;open возвращает -1. &lt;br&gt;&lt;br&gt;Есть такая штука, которая называется errno и она обычно отвечает на многие вопросы. В частности, в моём мане open(2) написано:&#091;code&#093;EFBIG  pathname refers to a regular file, too large to be opened; see  O_LARGEFILE  above.&lt;br&gt;              (POSIX.1-2001 specifies the error EOVERFLOW for this case.)&#091;/code&#093; вероятно именно это у вас происходит (вы можете убедиться в этом, вызвав, например, perror(3)), а above написано:&#091;code&#093; O_LARGEFILE&lt;br&gt;              (LFS)  Allow files whose sizes cannot be represented in an off_t (but can be repre&amp;#8208;&lt;br&gt;              sented in an off64_t) to be opened.  The _LARGEFILE64_SOURCE macro must be  defined&lt;br&gt;              in  order  to  obtain  this definition.  Setting the _FILE_OFFSET_BITS feature test&lt;br&gt;              macro to 64 (rather than using O_LARGEFILE) is the preferred  method  of  obtaining&lt;br&gt;              method of accessing large files on 32-bit systems (see feature_test_macros(7)).&#091;/code&#093; что отвечает на все ваши вопросы. Всё это можно проделать с</description>
</item>

<item>
    <title>fopen и open не открывают файлы больше двух ГБ (shutdown now)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8562.html#2</link>
    <pubDate>Sat, 19 Dec 2009 14:36:35 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;Компилирую так: &lt;br&gt;&amp;gt;gcc -std=c99 main.c &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Uname -a: &lt;br&gt;&amp;gt;2.6.31-14-generic #48-Ubuntu SMP Fri Oct 16 14:04:26 UTC 2009 i686 GNU/Linux &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;gcc version 4.4.1 &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Уже с ног сбился, гуглил до посинения, нигде не встречал подобных тем, &lt;br&gt;&amp;gt;чтобы у кого-то такая проблема была. &lt;br&gt;&lt;br&gt;-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>fopen и open не открывают файлы больше двух ГБ (const86)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8562.html#1</link>
    <pubDate>Sat, 19 Dec 2009 11:02:14 GMT</pubDate>
    <description>В самом начале файла перед инклудами написать&lt;br&gt;#define _XOPEN_SOURCE 600&lt;br&gt;или&lt;br&gt;#define _GNU_SOURCE&lt;br&gt;</description>
</item>

</channel>
</rss>
