Если вы не хотите вызывать внешние команды (exec, popen, system и т. Д.), Но не хотите изменять источник этих утилит и компилировать их в свой код (сравнительно легко, просто измените «main» на « main_cut 'и т. д.), тогда единственная оставшаяся опция, которую я вижу, это встраивать утилиты в ваш код и извлекать их во время выполнения или динамически создавать систему хранения файлов, указывая на данные внутри вашего кода (например, используя образ дискеты или CD и записывая модуль FUSE, который берет данные образа диска с адреса оперативной памяти). Все это кажется большой работой, чтобы сделать ее похожей на аккуратно упакованную утилиту.
Лично, если бы мне действительно пришлось это сделать, я бы получил источник всех этих утилит и скомпилировал их как внешние вызовы. Конечно, у вас больше не будет легко доступных каналов, вам придется либо использовать временные файлы для предварительной обработки, либо что-то более сложное, включая сопрограммы. Или, может быть, розетки. Много работы и грязи, что бы вы ни делали!