| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Максимальное число одновременно открытых файлов |
| Автор: vlad2 10.8.2011, 18:35 |
| Для открытия файла используется функция fopen. Если количество одновременно открытых файлов превышает максимум, то fopen не работает. По умолчанию установлено ограничение на 50 файлов: в stdio.h стоит "#define FOPEN_MAX (_NFILE_)", а в _nfile.h - "#define _NFILE_ 50". Как обойти это ограничение, или увеличить порог? Спасибо. |
| Автор: Alca 10.8.2011, 19:00 | ||
| Скорее всего, никак Добавлено @ 19:02 А билдер здесь где? Добавлено @ 19:02
|
| Автор: vlad2 10.8.2011, 19:16 |
Программирую на BCB 2006. В моём случае другие функции не подходят или почти не подходят. 50 файлов - это старое ограничение, странно, что оно ещё осталось даже в RAD Studio XE. |
| Автор: Alca 10.8.2011, 19:33 | ||||
| У дебилдера есть что-то вроде TFilestream Добавлено через 4 минуты и 38 секунд
Linux user-exm-5 2.6.38-10-generic #46-Ubuntu SMP Tue Jun 28 15:05:41 UTC 2011 i686 i686 i386 GNU/Linux
|
| Автор: vlad2 11.8.2011, 10:08 |
| Да, есть. Таких ограничений на открытые файлы там нет, но есть большой минус - отсутствие построчного считывание текстового файла, в который каждую секунду добавляются новые строки. |
| Автор: Alca 11.8.2011, 10:56 |
| глянь здесь http://bcbjournal.org/articles/vol2/9803/File_I_O.htm?PHPSESSID=20dcb6985671b5fb18b5bc225da381b7 |
| Автор: vlad2 11.8.2011, 11:30 |
| Спасибо, Alca, за ссылку. Первые два способа мне не подходят по причине ограничений на количество одновременно открытых файлов (50), а в TFilestream нет построчного считывания, нужны дополнительные действия, которые замедлят обработку: каждую секунду в открытые по сети файлы добавляются новые строки (другим пользователем), и мне нужно сразу же отображать эти изменения. И таких файлов много, пока около 60, а будет больше. |
| Автор: Alca 11.8.2011, 12:45 | ||
| WInAPI пробывал? Добавлено через 3 минуты и 4 секунды
так сделай |
| Автор: vlad2 11.8.2011, 12:53 |
| Нет, но построчного считывания там тоже нет. Только это и остаётся. |
| Автор: Alca 11.8.2011, 18:32 |
| Допили это http://www.viksoe.dk/code/atlfile.htm под себя |
| Автор: vlad2 11.8.2011, 19:02 |
| Спасибо, Alca, посмотрю. Список функций и исходник глянул, но построчного считывания там тоже, вроде, нет, надо ручками. Сейчас моя задача сильно упростилась - строки постоянной длины, поэтому обошёлся просто считыванием буфера постоянной длины. Использую функции из SysUtils (подобные TFileStream). Уже проверил, работает. Потом, если понадобится сделать универсальную задачу, буду думать. Думаю, тему можно пока закрыть. Спасибо за помощь. |