Я рассматриваю возможность создания приложения на 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 в качестве таймера.
Источник: 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