Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.06.12;
Скачать: [xml.tar.bz2];

Вниз

Создание и чтение файлов в памяти   Найти похожие ветки 

 
-=GaLaN=-   (2003-06-02 16:52) [0]

Помогите пожалуста!
Я уже задавал этот вопрос, но те примеры, что были приведены, мне не помогли. А все потому, что я вообще не разбираюсь в этом.
А смысл вот в чем. Программа запущена постоянно в фоне. Когда я запускаю вторую копию программы с каким-то параметром, как мне передать этот параметр первой копии с тем, чтобы вторую закрыть? Т.е. каким образом программа в реальном времени будет обрабатывать передаваемые ей параметры?
Я так понял, что это достигается созданием и чтение файла прямо в памяти. Но как это сделать?


 
Stas   (2003-06-02 16:55) [1]

Большой ?


 
Skier   (2003-06-02 16:55) [2]


> Когда я запускаю вторую копию программы с каким-то параметром,
> как мне передать этот параметр первой копии с тем, чтобы
> вторую закрыть?

Тебе нужно запускать только одну копию приложения ?


 
Юрий Зотов   (2003-06-02 17:06) [3]

Запуск единственной копии, передача параметров от второй копии первой, регистрация своего типа файлов и еще кое-что полезное:
http://www.delphikingdom.com/helloworld/samples_win.htm#link3

P.S.
"Файл в памяти" и "memory mapped file" - не одно и то же.


 
JohnJ   (2003-06-02 17:10) [4]

Не знаю что там на счёт файла в памяти, но если бы мне надо было бы такое сделать, я бы попробовал так:
Первая программа читает каждую минуту (или чаще, если надо) текстовый файл.
Когда запускается вторая программа, то она записывает в этот файл новую информацию...
Эта затея будет плохой, если первая программа должна будет отреагировать сразу же, т.к. тогда придётся ставить частую проверку файла, а это будет немного, но подтормаживать систему (а может и много, не проверял...).
Тогда, если первый вариант тебе не подходит, попробуй сделать что-то типа такого: вторая программа нажимает на кнопочку первой программы, и та начинает считывать файл. Я знаю, что имитировать нажатие на кнопочку или ещё на что-нибудь можно сделать, а как - не знаю...
Если я тебе ничем не помог - жди совета мастера! :) Удачи!


 
Serginio   (2003-06-02 17:15) [5]

2(JohnJ) Для этих целей существуют мьютексы и евенты. Твой вариант самый варварский по отношению к ресурсам.


 
-=GaLaN=-   (2003-06-02 17:25) [6]

2JohnJ:
Именно таким извратом я и занимался раньше, причем систему это не тормозило, а теперь решил сделать по-человечески, так как из-за этой программы ОС не выходила в sleep (постоянное обращение к харду).

2Юрий Зотов:
Спасибо огромное, кажется, это именно то, что мне нужно. Буду разбираться.


 
-=GaLaN=-   (2003-06-02 21:54) [7]

У меня все получилось! Остался только один вопрос...

> "Файл в памяти" и "memory mapped file" - не одно и то же.
А можно разъяснить эти понятия, если они означают не одно и то же?


 
Юрий Зотов   (2003-06-02 22:53) [8]

Грубо, "на пальцах".

"Файл в памяти" - просто загруженный файл. Хотя физически он может оказаться загруженным и не весь, а действительно быть только спроецированным и грузиться постранично, по мере реального обращения, да еще с учетом буферизации и кэширования, но это уже детали. Главное же то, что с такими файлами мы работаем обычными ReadFile и WriteFile - то есть, они представляют собой последовательный поток данных, имеют текущую позицию и пр.

"Memory Mapped File" - системный объект "проекция файла". Не обязательно связан с реальным дисковым файлом, это может быть и область страничной памяти системы. Реализуется через CreateFileMapping, MapViewOfFile, OpenFileMapping, а главное то, что такой "файл" становится как бы частью памяти и с данными в нем мы работаем так же, как и с памятью - сразу обращаясь напрямую по нужному адресу, без всяких текущих позиций. Часто используются для передачи данных между процессами.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.06.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.008 c
7-35091
Pavel M.
2003-04-08 21:03
2003.06.12
Изменение даты создания файла/каталога


3-34706
Denik
2003-05-23 11:23
2003.06.12
Блокировка в ADO


14-35047
Grab
2003-05-27 14:25
2003.06.12
Есть ли MP3 в сети?


14-34969
N119
2003-05-28 13:18
2003.06.12
LOL! Кошки чудят.


14-35063
Artefact OR
2003-05-28 09:13
2003.06.12
Supreme 2 нашёл девушку!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский