Довольно давно копаюсь с этим вопросом, но так к вразумительному решению не пришел.
Приблизительно как это должно выглядеть (во всяком случае, так себе это представляю):
- запускаю стороннюю прогу-клиент (допустим, это ftp);
- пишу в него нужные команды;
- получаю вывод;
- отправляю сигнал или пишу команду на завершение.
Проблемы и вопросы:
-  какие функции использовать при подключении к клиенту? Он же использует обычные потоки ввода/вывода и не открывает какие-нибудь каналы и уж тем более сокеты. И если использовать popen(), то как минимум придется ждать завершения процесса, что уже не подходит — процессы должны работать параллельно.
- не совсем понятно, как после ввода команды выдать что-то вроде сигнала, чтобы клиент начал выполнять требуемое.
-  синхронизация процессов.
 Можете что-нибудь предложить по этому поводу? 







