2012-02-09 4 views
7

Я пытаюсь запустить как сервер и клиент для работы с Makefile:Запуск два процесса параллельно с Makefile

цель:

./server& 
    ./client 

Проблема заключается в том, что сервер & никогда не возвращает управление обратно хотя я предполагаю, что он должен бежать в фоновом режиме. Он продолжает прослушивать клиента, который никогда не вызывается, поскольку make-файл, похоже, не возвращает управление с сервера. Как я могу решить эту проблему ?. без написания каких-либо дополнительных целей или скриптов ?.

С уважением Вишал

ответ

1

server работает в фоновом режиме. Вы можете поставить на передний план, используя команду fg. А затем убить его с помощью Ctrl-C

Или, может быть, этот метод: killall server

+0

Спасибо, ребята. Теперь работает. Изменение заключалось в том, что клиент бесконечно ждет завершения работы сервера, а затем запустит клиент в фоновом режиме и на сервере на переднем плане. Благодаря!!! –

+1

'fg' не работает в контексте make, потому что каждая строка выполняется в отдельной оболочке – Davide

9

Вы должны быть в состоянии сделать это путем объединения команд на одной строке:

target: 
    ./server& ./client 

Make руки commandlines к оболочка ($(SHELL)) одна линия за раз.

В качестве альтернативы, вы можете определить две независимые задачи:

target: run_server run_client 

run_server: 
    ./server 
run_client: 
    ./client 

и запустить делать с опцией -j, чтобы сделать его распараллеливание построить шаги:

make -j2 

Это не появляющимся наиболее естественное решение для запуск программы (например, для теста), но лучше всего работает, когда у вас есть большое количество правил сборки, которые могут быть частично построены параллельно. (Для немного больше контроля на make -s parallellization целей, см также

.NOTPARALLEL

Если .NOTPARALLEL упоминается в качестве цели, то этот вызов макияж будет выполняться последовательно, даже если ‘-j’ задана опция. Любая рекурсивно вызывается команда сделает все равно будет работать рецепты параллельно (если его Makefile также не содержит этой цели). Любые предпосылки на этой цели игнорируются.

+1

@Eldar спасибо за исправление – sehe

+0

, что вы приветствуете! –

Смежные вопросы