Man*_* T. 2 bash pipe io-redirection
除了创建 tmp 文件(显然)之外,cmd1 > tmp && cmd2 < tmp
和之间有什么区别cmd1 | cmd2
?
如果我对管道的理解是正确的,我希望在两种情况下都cmd2
从标准输入中读取输出cmd1
,所以我期望这两者的行为相同。
Go 程序似乎明确测试标准输入是否是管道,如果不是,则退出并显示诊断消息:
fi, err := os.Stdin.Stat()
if err != nil {
fatal(err)
}
if fi.Mode()&os.ModeNamedPipe == 0 {
usage()
os.Exit(1)
}
Run Code Online (Sandbox Code Playgroud)
两个命令行之间的另一个区别是使用管道,两个命令同时运行。左侧命令是书写,右侧命令是阅读。如果一个对另一个来说太慢(在读/写方面),较快的程序将暂时阻塞,直到较慢的程序赶上。
在这两个命令&&
中间运行的情况下,它们显然是接连运行的。在第一个命令完成并以零退出状态终止之前,第二个命令不会启动。
归档时间: |
|
查看次数: |
67 次 |
最近记录: |