2010-11-24 2 views
1

Существует «svn: Write error», если я попытаюсь выполнить следующий скрипт.
Но если я отключу строку с «последним», никаких ошибок не будет.
Почему?Ошибка при чтении вывода команды «svn log»

#!/usr/bin/perl 

my $repos = $ARGV[0]; 
my $rev = $ARGV[1]; 

my $repoURL = "file:///" . $ARGV[0]; 

open (SVNLOG, "svn log -r $rev -v $repoURL | "); 

while (my $line = <SVNLOG>) { 
    last; 
} 

close(SVNLOG); 

ответ

2

Поскольку процесс svn пытается записать в поток (его стандартный вывод), и вы закрыли поток, прежде чем он смог закончить. Если вы не хотите видеть эту строку ошибок, вам придется перенаправить стандартную ошибку svn на /dev/null или убедитесь, что вы прочитали все своего вывода перед закрытием дескриптора файла.

+0

Почему у меня нет такой ошибки в следующем случае open (SVNLOG, «ls -R $ TRACEDIR |»); – 2010-11-24 13:12:32

0

Непосредственный ответ на ваш вопрос, но вы должны рассмотреть возможность использования SVN::Client из CPAN вместо непосредственного использования инструмента командной строки svn.

Смежные вопросы