Dan*_*ete 8 shell io-redirection stdout stderr
我读过的重定向时stdout
和stderr
同一个文件使用2>&1
,stdout
通常,嵌段缓冲,而stderr
不是缓冲。
如果写入了很长的一行stdout
,需要两次单独刷新缓冲区,是否会发生一行从stderr
中间滑落?像这样的东西:
stdout: aaaaaaaa.....really long line......aaaaaaaaaaaa<newline>
stderr: eee<newline>
combined: aaaaaaaaaaaaaaaaeee<newline>
aaaaaaa<newline>
Run Code Online (Sandbox Code Playgroud)
是的,如果行stdout
足够长,这确实会发生。
#!/usr/bin/perl
use strict;
use warnings;
for (1..10) {
print "START"; print "-" x 100000; print "END\n";
warn "!\n";
}
Run Code Online (Sandbox Code Playgroud)
跑步:
./writer.pl > out 2>&1
Run Code Online (Sandbox Code Playgroud)
检查:out
在编辑器中打开文件并!
在 之间找到标准错误-
,而不总是在END
和START
这将因操作系统、语言和系统而有所不同,但您的基本假设是正确的。通过改变标准输出线长度实验:print "-" x 100
,print "-" x 10000
等
归档时间: |
|
查看次数: |
675 次 |
最近记录: |