Я сделаю две заметки в одной:
Во-первых, если у вас есть одна программа, генерирующая исходный код, почему бы не использовать обычную систему сборки, чтобы справиться с этим?Для системы сборки на основе Make это может выглядеть примерно так:
second_program : second.c
$(CC) $(CFLAGS) -o $@ $<
second.c : first_program
./first_program $(GENERATION_OPTIONS) > $@
first_program : $(LIST_OF_SOURCE_FILES)
$(CC) $(CFLAGS) -o $@ $<
Это больше соответствует философии Unix, чем первая программа, запускающая внешнюю команду, что всегда приятно.
Во-вторых, вы хотите, чтобы вторая программа генерировалась и выполнялась динамически?Т.е. будет ли полученный код зависеть от некоторого динамического состояния первой программы, и может ли вывод второй программы быть релевантным первой?Если это так, возможно, вам следует взглянуть на то, что вы можете сделать с библиотекой для запуска какого-либо языка сценариев, например LUA или ECMAScript .(Возможно, это слишком сложно для рассматриваемого вами случая, но всегда приятно знать, какие есть варианты.)