LINUX.ORG.RU

stdin/stdout


0

0

Предположим есть приложение от которого нет сырцов.
Задача - запустить его и на лету переключать ему stdin и stdout.
Как это сделать ? удалять и переназначать линки в /proc/pid/fd/ не получается, подозреваю это можно сделать при помощи ioctl, как ???

anonymous

У тебя есть шелл-ный скрипт. Из него ты запускаешь свою прогу. Таким образом дескрипторы stdin/stdout твоей проги в этом скрипте имеются. Остаётся только читать/писать данные в них и обрабатывать их как тебе захочется. Возможно с помощью других программ.
Где тут проблема?

geekkoo
()
Ответ на: комментарий от geekkoo

мне нужно именно переназначать ! те предположим запускалась программа с /proc/pid/fd/0 указывающим на одно, мы меняем и он указывает на другое, в процессе работы переназначать нужно !

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

> мне нужно именно переназначать ! те предположим запускалась
> программа с /proc/pid/fd/0 указывающим на одно, мы меняем и он
> указывает на другое, в процессе работы переназначать нужно !

Нет, я практически уверен, что так сделать нельзя.
Тебе выше уже дали совет, попробую расшифровать:
Напиши оберточку (на Perl, Python, C ...), которая
запускает твою closed-source программу, связывая ее
stdin и stdout с pipe'ами. А уж что писать/читать
в/из pipe'ов ты теперь контролируешь ;-)

Альтернативный (похожий) вариант:
$ my_close_source_prog </path/to/fifo_in >/path/to/fifo_out
Теперь внешними программками/скриптами тв пишешь/читаешь
fifo_in и fifo_out.

HTH


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