Как можно из PERL выполнить программу, сначала слив ей в stdin инфу, а потом получить из её stdout-а результат?
после поисков нарыл такой вариант:
--parent--------
$text="123456789";
use IPC::Open2;
$pid = open2(*CHLD_OUT, *CHLD_IN, $name);
print CHLD_IN $text; #уходят без проблем, ничего не блокируется
close(CHLD_IN);
while (<CHLD_OUT>) {print ;} #отсюда получаем только "t1t2"
close(CHLD_OUT);
--child----------
print "t1";
while(<STDIN>){print ;} #тут пусто
print "t2";
-----------------
частично это работает, т.е. данные из stdout читаются.
но вот с первой частью проблема. данные уходят(ничего не блокируется даже если их много), но вот куда они приходят выяснить пока не удалось. :-(
Похожие темы
- Форум perl обработка stdout and stdin сторонней проги (2006)
- Форум Perl, autoflush и потоки (2015)
- Форум C++, Perl and pipe (2001)
- Форум perl, IPC & socket - чего тут не так? (2006)
- Форум Perl + FastCGI + nginx (2009)
- Форум двунаправленный канал через ssh на perl (2003)
- Форум [perl] проброс проги в сокет (2008)
- Форум помогите найти ошибки в следующем перловом коде (2004)
- Форум клиент и сервер на Перл (2009)
- Форум Блокировка каналов ввода-вывода в линукс (2024)