执行命令时(在Linux中):
go run test.go |head
输出结果为:
line 0
line 1
line 2
line 3
line 4
line 5
line 6
line 7
line 8
line 9
signal: broken pipe
如何防止程序打印信号通知(最后一行)?
[BTW:偶2>/dev/null
不起作用。可能最后一行输出到TTY]
答案 0 :(得分:1)
您不打印代码test.go
,因此很难判断。
例如,它是否在打印之间休眠?
由于管道链中的一个程序,断管会很开心:
a.exe|b.exe|c.exe|d.exe
提前结束。 test.go
在头部仍然期待时终止
输入或更可能的头在test.go
完成运行之前终止。特别是因为head的默认值是10行。
对此进行的测试是go run test.go |head -20
,看看打印后是否有管道损坏。
我无法用C ++复制它,也不知道去吧。如果它是go运行时的结果,我建议你尝试在代码中捕获SIGPIPE并安静地终止。 (与你的语言无关,过程与语法不同。)
否则这更像是一个bash / zsh /无论shell du jour是什么。在运行命令之前,让SIGPIPE的信号处理程序干净地退出。