LINUX.ORG.RU

Запуск процесса, контроль за вводом и получение вывода

 , ,


1

1

Довольно давно копаюсь с этим вопросом, но так к вразумительному решению не пришел.

Приблизительно как это должно выглядеть (во всяком случае, так себе это представляю):

  • запускаю стороннюю прогу-клиент (допустим, это ftp);
  • пишу в него нужные команды;
  • получаю вывод;
  • отправляю сигнал или пишу команду на завершение.

Проблемы и вопросы:

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


    Можете что-нибудь предложить по этому поводу?

★★★

Последнее исправление: cetjs2 (всего исправлений: 2)

Можете что-нибудь предложить по этому поводу?

не дёргать тег c++

emulek
()

Довольно давно

Довольно давно?

// ответы уже назвали, да.

Stil ★★★★★
()
Ответ на: комментарий от anonymous

С каналами не вариант... не совсем понятно, как клиенту писать в него.+

kachsheev ★★★
() автор топика
Ответ на: комментарий от pon4ik

Почитал про это. Выглядит вполне неплохо. Спасибо.

kachsheev ★★★
() автор топика
Ответ на: комментарий от kachsheev

Это всё вместе, pipe создаёт каналы, fork дочерний процесс, потом через dup выполняется перенаправление и exec заменяет образ дочернего процесса. Выглядит как-то так, но там без stdin, по аналогии можно добавить.

xaizek ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.