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