我真的不懂Perl,所以我想知道是否有人可以给我一个提示,告诉我这个代码对STDIN的要求是什么,以及如何在C#中说这个。 感谢。
$TMPFILE = "xxx.tmp";
if (! -f STDIN) {
open TMPFILE, "> $TMPFILE"
or die "Couldn't open `$TMPFILE' for writing: $!; aborting";
print TMPFILE while <STDIN>;
close TMPFILE;
open STDIN, "< $TMPFILE"
or die "Couldn't open `$TMPFILE' for reading: $!; aborting";
unlink $TMPFILE;
}
答案 0 :(得分:3)
代码读取从STDIN(等于Console.In)到EOF到临时文件的所有内容,然后将STDIN重定向到该临时文件。在C#中,您使用Console.SetIn()方法重定向。
答案 1 :(得分:2)
如果STDIN未连接到普通文件,它会打开一个临时文件,从标准输入复制到临时文件(最多为EOF),然后连接STDIN以从该文件读取。据推测,它是这样做的,因为后来它希望能够在STDIN上seek
,并且你无法寻找特殊文件。
-f STDIN
为true,如果连接到特殊文件(如控制台或管道),则为false。