2015-11-20 1 views
1

Я читал this статью о межпроцессной связи с передачей сообщений. Чтобы запускать примеры и видеть, что это говорит, я цитирую: «должен быть скомпилирован и запущен одновременно». У кого-то есть идеи, как именно я должен это делать?Выполнение двух программ одновременно C/C++

+4

1. Скомпилируйте и запустите один. 2. Не останавливая первый, скомпилируйте и запустите другой? - В качестве альтернативы это может означать: 1. Скомпилировать оба. 2. Запустите его. 3. Не останавливая первый, запустите другой. (потому что английский такой странный) – immibis

+0

Если вы работаете в Linux, fork() и exec() совместно позволят вам одновременно запускать два разных исполняемых файла, но вы не можете выполнить программу во время компиляции Это. Вероятно, подобные функции выполняются в Windows и других операционных системах, отличных от POSIX. –

+0

Я пытаюсь выяснить, как вы должны запускать программу во время ее компиляции. В этой цитате может быть ошибка грамматики ... – user4581301

ответ

0

Вы можете создать файл BAT и запустить обе программы практически одновременно:

START first.exe 
START second.exe 
0

«должен быть составлен и запустить в то же время»

Я думаю, что это ясно, программа может не запускаться до тех пор, пока он не будет скомпилирован (это небольшая грамматическая проблема, и ее следует игнорировать).


В Linux мой предпочтительный механизм запуска процесса - это popen, вызываемый моей программой на C++.

В C++ для одного потока (позвольте нам назвать этот процесс запуска) легко использовать popen для запуска как можно большего количества процессов для вашего приложения (назовем эти рабочие процессы).

Затем я использовал сообщения для синхронизации запуска (т. Е. Рабочие процессы должны инициализироваться, а затем ждать (при запуске) для сообщения go из процесса запуска). Эти сообщения запуска работают так же, как ваше приложение будет их использовать. Это гарантирует одновременное выполнение нескольких рабочих процессов (но в пределах ограничений количества ядер, доступных вашей системе).