|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Vladimir Bormotov 2:5020/400 23 Jan 2003 00:54:07 To : Zahar Kiselev Subject : Re: научный вопрос --------------------------------------------------------------------------------
Hi, Zahar!
>>>>> "ZK" == Zahar Kiselev <Zahar.Kiselev@p1.f382.n5030.z2.fidonet.org> writes:
VB>> с момоента знакомства с unix, я искренне верю, что stdin/stdout это
VB>> точно такие-же файлы, как и все другие.
ZK> Вот тогда тебе-то я и задам следующий вопрос. В описании к
ZK> вышеупомянутому исходнику сказано, что сделан он на основе "трубы"
ZK> (pipe) и из-за ее однонаправленности нет возможности получать в
ZK> программу информацию о результате выполнения команды.
а нужно?
ZK> В моем случае важен сам факт окончания исполнения текущей команды -
ZK> чтобы не "кормить" гнуплот данными быстрее, чем он их в состоянии
ZK> пережевывать (а делает он это в случае простого двумерного графика
ZK> весьма быстро).
понятно.
ZK> Только вот кажется мне, что в данном случае имеет место не ограничение
ZK> системы на однонаправленность трубы, а недостаточная квалификация того
ZK> кто это писал(либо ему было не надо).
скорее всего не нужно было.
ZK> Отсюда возникла мысль - поразбираться в механизме переназначения
ZK> stdin/stdout для запускаемой посредством fork/exec программы и
ZK> "подключиться" не только к ее stdin, но и к stdout тоже. Чтобы после
ZK> запуска можно было в один дескриптор писать команды, а из другого
ZK> получать ответы. А программа(гнуплот в моем случае) рисует графики на
ZK> иксовом экране.
да, с подключением никаких проблем с этим нет, с fork/exec могут быть
вопросы.
ZK> Остается подсмотреть где-нибудь как одновременно переназначить stdin и
ZK> stdout запускаемой программы и отдать "ручки управления"(хэндлы)
ZK> родительскому процессу. Только не предлагай исходник bash изучать -
ZK> он немного великоват будет в качестве учебного пособия:-)
не, не предлагаю ;-)
я навскидку даже не знаю где эт смотреть.
у меня в питоне есть в дополнению к popen еще и
popen2(cmd[, bufsize[, mode]])
Executes cmd as a sub-process. Returns the file objects (child_stdout,
child_stdin).
popen3(cmd[, bufsize[, mode]])
Executes cmd as a sub-process. Returns the file objects (child_stdout,
child_stdin, child_stderr).
popen4(cmd[, bufsize[, mode]])
Executes cmd as a sub-process. Returns the file objects
(child_stdout_and_stderr, child_stdin). New in version 2.0.
Т.е. вопрос "а как это перехватить" ваще не стоит. И разбираться ни с чем
ненужно - все в доке на модуль os (начиная с python 2.0, в более ранних на
модуль popen2). Hасколько я помню, в perl такое тоже есть ;)
[skip]
--
Bor.
--- ifmail v.2.15dev5
* Origin: BorHomeLand (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/25417ac13726.html, оценка из 5, голосов 10
|