Как связать несколько программ

Я рассматриваю возможность создания приложения на C ++, которое будет анализировать текст из Интернета и создавать некоторые статистические результаты. Эти результаты я хочу передавать во внешнее приложение в режиме реального времени. Внешнему приложению (к коду которого у меня нет доступа, но я могу запросить — платное — сделанное на заказ дополнение) затем потребуется некоторый код для чтения и использования этих результатов. Мне интересно, как лучше всего соединить два приложения с точки зрения скорости и простоты реализации. Я рассматриваю :

disk I/O (slow) a Windows service a DLL a web service a web page
Возможно, мне не хватает лучшего решения? Спасибо.
Update : there is an additional need to know how long a data request may take at worst.
задан 18 мая ’10, 15:05

3 ответы

Есть несколько механизмов IPC на выбор (сокеты, разделяемая память, каналы, . ). Я предполагаю, что «лучший выбор» будет в значительной степени зависеть от того, как структурировано другое приложение, также известное как. сколько будет стоить ваше собственное расширение. Я мало что знаю о вашей среде, но, возможно, стоит взглянуть на boost.interprocess: http://www.boost.org/doc/libs/1_43_0/doc/html/interprocess.html

Как связать несколько своих профилей Авито и переписываться с лидами в одном приложении?

ответ дан 18 мая ’10, 19:05

  • Розетки?
  • Общая память?
  • RAM-диск?
  • TCP / IP?
  • Сообщения Windows?
  • Аргументы командной строки (другого приложения)?

Какие методы есть у другого приложения для поддержки получения данных?

ответ дан 18 мая ’10, 19:05

AFAIK другое приложение получает данные только с клавиатуры. Аргументы командной строки не помогут, потому что суммы должны подаваться постоянно в реальном времени, а внешнее приложение уже должно быть запущено. — Sevaxx

Служба Windows была бы разумной, но все равно должна была бы взаимодействовать с другим приложением, это называется IPC, подходы к Windows описаны здесь, Named Pipes просты и гибки, File Mapping — мощное средство.

Читайте также:
Программа тут или там

Альтернативой было бы воткнуть базу данных посередине?

ответ дан 18 мая ’10, 19:05

Хорошие моменты. Это также заставило меня понять, что мне нужно иметь некоторый контроль над скоростью процесса общения. Например, сообщение Windows может быть поставлено в очередь, и ему потребуется время, чтобы добраться до получателя. Я обновлю оп, чтобы добавить и это ограничение. Интересно, какие накладные расходы налагает БД . — Sevaxx

База данных имеет некоторые данные для чтения / записи на диск и, вероятно, будет медленной. — Вартин

Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками c++ windows process ipc or задайте свой вопрос.

Источник: stackovergo.com

Как связать или связать две программы на c ++ друг с другом?

У меня есть проект. Мне нужно связать две отдельные программы, одна из которых является основной деятельностью, а другая — пользовательскими данными друг с другом. Мне нужно использовать только компилятор Turbo C ++.

Как объединить видео в видеоредакторе Windows 10 как соединить несколько видео в одно без программ

Utkaarsh Saha 2 Ноя 2019 в 09:05
Что вы имеете в виду под словом «ссылка»? Один звонит другому?
2 Ноя 2019 в 09:07
Да. Вроде предоставляется выбор. Пользователь выбирает вариант, и он запускает вторую программу.
Utkaarsh Saha

2 Ноя 2019 в 09:10
Если под ссылкой вы имеете в виду канал, вы можете использовать | в bash: prog1 | prog2
Ayxan Haqverdili
2 Ноя 2019 в 09:18
4 Ноя 2019 в 14:32

2 ответа

Думаю, вам стоит заглянуть в заголовочный файл process.h

Он содержит несколько функций для запуска других процессов, и я думаю, это то, что вы хотите сделать.

Тем не менее, грустно, что вам в это время и в возрасте приходится работать с устаревшим компилятором, когда существует так много хороших, бесплатных альтернатив.

Читайте также:
Программа продвижения продукта это

Таким образом, приведенный выше совет предназначен для ситуации, когда у вас есть два файла .exe и вы хотите вызвать один exe из другого. Конечно, есть способы сделать это лучше, если у вас есть оба исходных кода. Вы можете, например, создайте DLL и динамически загрузите DLL с .exe, или вы можете создать статически связанный файл .LIB и связать его с exe.

AndersK 2 Ноя 2019 в 09:37

Я это сделал. Сначала я использовал заголовок process.h и включил другой файл как #include , а затем использовал функцию spawnl для запуска процесса.

Utkaarsh Saha
2 Ноя 2019 в 09:29

Я думаю, что вам нужно скомпилировать другую программу отдельно, создав отдельный файл .exe, а затем вызвать этот .exe из вашей первой программы. Если вы включаете .cpp, тогда нет необходимости использовать process.h, так как вы находитесь в том же .exe

2 Ноя 2019 в 09:33

Если это ответило на ваш вопрос, вы должны принять его как решение (проверьте чекер возле счетчика голосов)

4 Ноя 2019 в 12:49

Совет типа «используйте DLL» предполагает, что у вас есть что-то столь же современное, как Windows 1.0 1985 года. Но даже эта роскошь, похоже, исключена, поскольку целью является древняя MS-DOS.

4 Ноя 2019 в 14:31

Я работал с Windows 1.0 еще в 1988 году, которая работала поверх DOS. Не помню, были ли тогда библиотеки DLL, если честно. 🙂

6 Ноя 2019 в 09:08

Для отдельных прогонов, как вы описали в своем комментарии:

Переименуйте основные функции в обеих программах, например, на main1,main2 , а затем включите их исходные коды в свою окончательную программу:

#include «source1.cpp» #include «source2.cpp» void main()

В случае конфликта имен вы можете использовать namespace или переименовать конфликтующие переменные / константы / макросы / функции.

вызовы и логика двух программ или реализовать своего рода многопоточность с использованием PIT ISR в качестве таймера.

Читайте также:
Adobe after effects как программа

Источник: question-it.com

Как связать или связать две программы на C++ друг с другом?

У меня есть проект. Мне нужно связать две отдельные программы, одна из которых является основной деятельностью, а другая — пользовательскими данными. Мне нужно использовать только компилятор Turbo C++.

user12311145 02 ноя ’19 в 09:05 2019-11-02 09:05
2019-11-02 09:05

2 ответа

Думаю, вам стоит заглянуть в заголовочный файл process.h

Он содержит несколько функций для запуска других процессов, и я думаю, это то, что вы хотите сделать.

Тем не менее, грустно, что вам в это время и в возрасте приходится работать с устаревшим компилятором, когда есть так много хороших, бесплатных альтернатив.

Таким образом, приведенный выше совет предназначен для ситуации, когда у вас есть два файла.exe и вы хотите вызвать один exe из другого. Конечно, есть способы сделать это лучше, если у вас есть оба исходных кода. Вы можете, например, создать DLL и динамически загружать DLL с.exe или вы можете создать статически связанный файл.LIB и связать его с exe.

user45685 02 ноя ’19 в 09:21 2019-11-02 09:21
2019-11-02 09:21

Для отдельных прогонов, как вы описали в своем комментарии:

переименуйте основные функции в обеих программах, например, main1,main2 а затем включите их источники в свою окончательную программу:

#include «source1.cpp» #include «source2.cpp» void main()

В случае конфликта имен вы можете использовать namespace или переименуйте конфликтующие переменные / константы / макросы / функции.

Если вам нужно, чтобы обе программы работали одновременно, вместо этого вам нужно будет объединить две основные сети в одну, что не так просто и не видит архитектуры кода, на которую невозможно ответить. Такая задача либо чередует вызовы и логику двух программ или реализовать своего рода многопоточность, используя PIT ISR в качестве таймера.

Источник: stackru.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru