Статья у вас фундаментальная. И по её изучении я в том числе нарисовал схему (некий сухой остаток для закрепления). Если не сложно, посмотрите, что нужно в ней подправить.
В терминале запускается нужная программа с помощью вызова функции exec(). Обычно запускается какой-то Shell (например, Bash).
Разрешите наивный вопрос. Разве exec не подразумевает замену вызывающей программы на вызываемую? И получается, что Shell у нас должен появиться вместо эмулятора терминала. Проясните, пожалуйста, этот момент.
В LibreDraw