Похоже, вы создаете какой-то механизм репликации. Узел A выполняет действия с 1 по N, а затем вы хотите повторить те же действия на узле B.
Здесь много вариантов, но все они делятся на две категории:
Вариант 1. Запишите файл журнала в формате, который может использоваться существующей утилитой. Если бы вы использовали JavaScript или другой язык с функцией eval, это было бы очень просто. Вы просто записали бы JavaScript в файл журнала на узле A, а затем «оценили» его с узла B.
Пример журнала, который вы предоставили, отражает этот подход, хотя он будет немного более сложным для вас, потому что C не имеет функции "eval". По сути, вам придется отправить файл журнала из узла A в B, скомпилировать его и связать с библиотеками или другими модулями C, которые реализуют функции, используемые журналом C, а затем запустить полученную программу. Вы можете превратить файл журнала в полный исходный файл C, включив его в шаблон, подобный следующему:
int main(int argc, char *argv[]) {
// Do your setup stuff here.
#include "/path/to/the/log/file"
// Clean up.
return 0
}
Вариант 2. Создайте синтаксический анализатор, который анализирует и выполняет журнал в контексте какой-либо другой программы.
В этом случае, поскольку ваши операторы журнала выглядят как C, вы, по сути, будете писать интерпретатор C.