capturing stderr/stdout
I am not sure what the issue is here. Do you want to capture both stderr and stdout (use 2>1 in the command with an sh-like shell), or is the problem that you don't get immediate output? The latter is a Perl issue: you need to circumvent output buffering. See e.g http://perl.plover.com/FAQs/Buffering.html
Sundar Dorai-Raj wrote:
Hi,
I have an application in perl that prints some output to either stderr
or stdout.
Here's an example:
# tmp.pl
print STDERR "starting iterator\n";
for(my $i = 0; $i < 1000000; $i++) {
print $i . "\n";
}
# tmp.R
con <- pipe("perl tmp.pl")
r <- readLines(con, n = -1)
close(con)
However, the second line stalls until the perl for-loop finishes. What I
would like is to process each line as it comes. E.g. something like:
while(TRUE) {
r <- readLines(con, n = 1) # read one line
if(r == "10000") print(r)
if(length(r) == 0) break
}
Of course, this won't work since I'm not calling readLines
appropriately. Answers must work on Windows but may include cygwin
utilities if necessary. Any advice would be appreciated. Version info at
the end if it matters.
Thanks, --sundar
> version
_ platform i386-pc-mingw32 arch i386 os mingw32 system i386, mingw32 status major 2 minor 8.0 year 2008 month 10 day 20 svn rev 46754 language R version.string R version 2.8.0 (2008-10-20)
______________________________________________ R-help at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
Brian D. Ripley, ripley at stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595