я хочу запускать программу и управлять её stdout & stdinput из
своей программы. Написал следующий код, но он вылетает сразу
после первой команды со словами Broken Pipe:
#!/usr/bin/perl -w
use IPC::Open2;
use strict;
my ($pid1,$line);
my $pid = open2(*RD, *WR, '/home/victor/roof/lmox1');
if ($pid1 = fork) { # fork dlya 2-x process, v etom
# pishu na stdin my_program
while(<STDIN>){ # chitayu vvod s kezboard
print WR $_,"\n"; # pishu vvod so STDIN v my_program;
}
waitpid($pid1,0);
} else {
# v etom process chitayu stdout my program
die "cannot fork: $!" unless defined $pid;
while(<RD>){
# next unless /\S/;
print $_;
}
print "tut\n"; # vihodit tut posle pervoj komandy
exit;
}
Может, быть, дело в том, что while(<RD>) работает только
пока <RD> defined? А как тогда сделать так, чтобы while(<RD>)
работал так-же как и while(<STDIN>) ?
Спасибо!
Ответ на:
комментарий
от Legioner

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум PERL, перехват STDIN и STDOUT одновременно (2007)
- Форум perl, IPC & socket - чего тут не так? (2006)
- Форум [perl] проброс проги в сокет (2008)
- Форум Perl + FastCGI + nginx (2009)
- Форум [perl] прога плодит зомби (2008)
- Форум помогите найти ошибки в следующем перловом коде (2004)
- Форум Написание front-end-ов (2004)
- Форум execl не принимает аргумент из pipe (версия 2, обновленная) (2015)
- Форум двунаправленный канал через ssh на perl (2003)
- Форум клиент и сервер на Перл (2009)