У меня есть несколько исходных файлов, которые работают вместе как анонимные узлы публикации / подписки. Есть основная функция, которая собирает все узлы и запускает их через их стартовые функции.
// main.cpp
#include "nodeA.h"
#include "nodeB.h"
int main(int argc, char *argv[])
{
/* some argument parsing here */
start_node_a(argc, argv);
start_node_b(argc, argv);
}
Чтобы упростить настройку, я хотел бы превратить основную функцию в сценарий оболочки, который запускает эти узлы. Это означало бы превращение start_node()
функций в main()
функции, чтобы они запускались из командной строки.
#!bin/bash
node_a -args
node_b -different_args
Это усложняет выполнение тестов, т.
Мое решение состоит в том, чтобы обернуть start_node
функции в главную функцию, но для этого требуется дополнительный шаблон для каждого узла и некоторые дополнительные мастерские сборки, чтобы игнорировать main во время тестового связывания, но не сборки узла (на самом деле я не уверен, смогу ли я получить это пока работать с gnumake & g ++).
// nodeA.cpp
int main(int argc, char *argv[])
{
start_node_a(argc, argv);
}
Есть ли более элегантный способ сделать это? Метод запуска программы из вызова функции в тестах и запуска программы из командной строки?
* Примечание: я также думал о системных вызовах, но считаю, что это худшее решение, чем использование оболочки main ().
fork
,execve
,/bin/sh
.... - person Basile Starynkevitch   schedule 02.03.2015