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

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


person Utkaarsh Saha    schedule 02.11.2019    source источник
comment
Что вы подразумеваете под «ссылкой»? Один звонит другому?   -  person Aganju    schedule 02.11.2019
comment
да. Вроде выбор дан. Пользователь выбирает вариант, и он запускает вторую программу.   -  person Utkaarsh Saha    schedule 02.11.2019
comment
Если под ссылкой вы подразумеваете канал, вы можете использовать | в bash: prog1 | prog2   -  person Ayxan Haqverdili    schedule 02.11.2019
comment
@Ayxan: bash предполагает Unix-подобную систему, TurboC++ указывает на MS-DOS.   -  person MSalters    schedule 04.11.2019


Ответы (2)


Я думаю, вы должны посмотреть в заголовочный файл process.h

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

https://en.wikipedia.org/wiki/Process.h

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

РЕДАКТИРОВАТЬ:

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

person AndersK    schedule 02.11.2019
comment
Я это сделал. Сначала я использовал заголовок process.h и включил другой файл как #include‹(filedirectory\name.cpp)›, а затем использовал функцию spawnl для запуска процесса - person Utkaarsh Saha; 02.11.2019
comment
Я думаю, что вам нужно скомпилировать другую программу отдельно, создав отдельный файл .exe, а затем вызвать этот .exe из вашей первой программы. Если вы включаете .cpp, нет необходимости использовать process.h, так как вы находитесь в том же .exe - person AndersK; 02.11.2019
comment
@Anders, если это ответило на ваш вопрос, вы должны принять это как решение (проверьте чекер возле счетчика голосов) - person Spektre; 04.11.2019
comment
Такой совет, как использование DLL, предполагает, что у вас есть что-то столь же современное, как Windows 1.0 1985 года. Но даже такая роскошь кажется исключенной, поскольку целью является древняя MS-DOS. - person MSalters; 04.11.2019
comment
@MSalters Я работал с Windows 1.0 еще в 1988 году, которая работала поверх DOS. Честно говоря, не помню, были ли тогда библиотеки DLL. :) - person AndersK; 06.11.2019

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

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

#include "source1.cpp"
#include "source2.cpp"
void main()
 {
 ...
 if (option==1) main1();
 if (option==2) main2();
 }

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

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

person Spektre    schedule 04.11.2019