Форум программистов, компьютерный форум CyberForum.ru

Связь двух программ через файл данных - C++

Восстановить пароль Регистрация
 
eugrita
3 / 4 / 0
Регистрация: 18.11.2009
Сообщений: 405
12.01.2010, 13:40     Связь двух программ через файл данных #1
(среда С++ Builder). (Интеграция технологических процессов)

Как автоматизировать работу 2 приложений, связанных по файлу данных?
Пусть программа2 должна создать файл dat.txt необходимое программе1
Например есть возможность запуска программы2 из исходной
(хэдер process.h , функции execl и т.п.). Однако при этом встает проблема
отслеживания лмбо конца работы программы2, либо конца записи в файл.
Проблема осложняется еще тем что вроде бы в стандартных флагах
открытия файлов fopen не предусмотрен эксклюзивный доступ и либо тогда
надо переписывать процедуры работы с файлами с использованием функций
ниэнего уровня open (возможно еще различающихся для разных ОС и реализаций С)
либо пойти на обмен межпроцессными сообщениями, что тоже не очень приятно.
Простейший тест в С++ Builder показал что при открытии файла c незавершенным
процессом записи по fopen (fln,"w")
попытка чтения по f=fopen (fln,"r") действительно открывает файл
т.е f<> NULL однако операторы чтения не проходят (или читается мусор).
Итак , как лучше поступить
а)использовать приемы обмена сообщениями между приложениями
или
б)все-таки пойти на замену процедур работы с файлом чтобы обеспечить эксклюзивный доступ

и то и другое по-моему недостаточно освещено в стандартной тезнике программирования
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
solar_wind
 Аватар для solar_wind
740 / 731 / 39
Регистрация: 06.07.2009
Сообщений: 2,937
Завершенные тесты: 1
12.01.2010, 14:07     Связь двух программ через файл данных #2
Если в обоих приложениях ты будешь открывать файл и для чтения и для записи, то он будет заблокирован для одного из них.
eugrita
3 / 4 / 0
Регистрация: 18.11.2009
Сообщений: 405
12.01.2010, 16:54  [ТС]     Связь двух программ через файл данных #3
Спасибо. Однако не совсем согласен.Я только утверждаю, что
fopen возвращает ненулевой дескриптор, и программа выполняет следующий оператор - чтение
файла по scanf и он то не работает. Т.е. при работе с C Runtime Library в таком стиле нет! программных средств контроля за блокировкой если она даже произошла
Пробовал также lock и unlock однако они 1)используют целый дескриптор файла
2) по моему попытка заблокировать файл при активном 2-м процессе с lock не удалась
solar_wind
 Аватар для solar_wind
740 / 731 / 39
Регистрация: 06.07.2009
Сообщений: 2,937
Завершенные тесты: 1
13.01.2010, 06:11     Связь двух программ через файл данных #4
eugrita, Ты можешь отслеживать успешное выполнение операции открытия файла, чтения, записи. Если открытие прошло не успешно, то пробуешь позже.

Добавлено через 1 минуту
Но вообще удобнее с данном случае использовать например СУБД какую либо, в которой эти механизмы уже безопасно реализованы.
Yandex
Объявления
13.01.2010, 06:11     Связь двух программ через файл данных
Ответ Создать тему
Опции темы

Текущее время: 20:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru