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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
eugrita
3 / 4 / 0
Регистрация: 18.11.2009
Сообщений: 447
#1

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

12.01.2010, 13:40. Просмотров 505. Ответов 3
Метки нет (Все метки)

(среда С++ Builder). (Интеграция технологических процессов)

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

и то и другое по-моему недостаточно освещено в стандартной тезнике программирования
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.01.2010, 13:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Связь двух программ через файл данных (C++):

С++ , связь программ - C++
Добрый день, уважаемый форумчане. Хотелось бы потолковать с вами на такую тему: Я - начинающий программист, расскажите мне, каким образом...

Русско-английский словарь. Ввод данных с двух файлов. Вывод результата в файл - C++
Здравствуйте, сама задача: Даны два текстовых файла - в первом расположены русские слова, во втором их англоязычный перевод. Создать...

Реализовать базу данных через текстовый файл - C++
народ у меня есть вопрос как сделать чтобы программа на си++ записывала данные в одномерный массив а потом записывала данные массива в...

Объединение двух программ - C++
Здравствуйте, Я начинающий. Создал маленькие 2 программы: 1. Вывод информации при введении определенного слова в компиляторе; 2....

Объединение двух программ в одну - C++
Есть у меня две программы. Одна заправшивает грани интервала, колво точек на нем и строит таблицу со значениямиx и y для опредделенного...

Один массив для двух программ - C++
Доброго времени суток. У меня есть программа которая считывает входные данные из файла (я их записываю в вектор) потом провожу некоторые...

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

Добавлено через 1 минуту
Но вообще удобнее с данном случае использовать например СУБД какую либо, в которой эти механизмы уже безопасно реализованы.
0
13.01.2010, 06:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.01.2010, 06:11
Привет! Вот еще темы с ответами:

Запуск программ через программу - C++
Мне стало интересно, как запустить другую программу через свою. Т.е., например, терминал спрашивает что запустить выбираю и запускается...

Активатор программ через ключ - C++
Как на С++ можно реализовать активацию через ключ, чтобы ключ можно было выдавать на выбранное время к примеру на день или месяц, и чтобы...

Открытие программ через Eclipse - C++
Скачал программу из интернета в формуте .cpp ,открыл через Эклипс,появился код,кнопка Build не доступна.Как запустить? Буду признателен...

Закрытие программ через командную строку - C++
помогите, вирус поймал, блочит гугл, в диспетчер захожу, при наведении на процессы, процессы исчезают, как через командную строку закрыть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru