Всем привет!
Есть исполняемый бинарник с выводом определенного формата. Требуется написать для него front-end. Я использую связку Perl+Tk. Форкаюсь. В потомке переназначаю STDOUT на заранее созданный fifo-файл и включаю autoflush. Выполняю exec с бинарным файлом. В родителе открываю fifo-файл и просто считываю оттуда информацию. Все классно, я получаю вывод, но... Но только когда отработает бинарник. Не по мере поступления, а только тогда, когда он закончится. Меня же интересует его вывод во времени. Что я делаю не так?
#!/usr/bin/perl
use IO::Handle;
#Ла-ла-ла # #
if($pid = fork()){ open(STDIN,"<uploader.fifo"); while(<STDIN>){ if(/kB sent/){ #Полезные действия } } }elsif(defined($pid)){ open(STDOUT,">uploader.fifo"); STDOUT->autoflush(1); exec("./uploader -t -f $file rstp://$ip:$port/$virtual_disk/$_ $ip $port"); }