Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 忽略';管道破裂';信号_Go - Fatal编程技术网

Go 忽略';管道破裂';信号

Go 忽略';管道破裂';信号,go,Go,执行命令时(在Linux中): 输出为: line 0 line 1 line 2 line 3 line 4 line 5 line 6 line 7 line 8 line 9 signal: broken pipe 如何防止程序打印信号通知(最后一行) [顺便说一句:即使是2>/dev/null也不起作用。可能是输出到TTY的最后一行]您没有打印代码测试。转到,因此很难判断。 例如,它是否在打印之间休眠 管道断开可能是因为管道链中的一个程序: a.exe|b.exe|c.exe|d.ex

执行命令时(在Linux中):

输出为:

line 0
line 1
line 2
line 3
line 4
line 5
line 6
line 7
line 8
line 9
signal: broken pipe
如何防止程序打印信号通知(最后一行)


[顺便说一句:即使是
2>/dev/null
也不起作用。可能是输出到TTY的最后一行]

您没有打印代码
测试。转到
,因此很难判断。
例如,它是否在打印之间休眠

管道断开可能是因为管道链中的一个程序:

a.exe|b.exe|c.exe|d.exe
提前终止。
test.go
在head仍在等待时终止 输入或更可能在
test.go
完成运行之前终止。尤其是因为head的默认值是10行

测试方法是执行
运行test.go | head-20
,然后查看打印20后是否有管道破裂

我不能在C++中复制这个,不知道GO。如果这是go运行时的结果,我建议您尝试在代码中捕获SIGPIPE并安静地终止。(不管你使用哪种语言,过程是一样的,语法是不同的。)


否则,这更像是一个bash/zsh/无论shell是什么。在运行命令之前,请为SIGPIPE创建一个干净退出的信号处理程序。

您是否尝试过
go run test.go 2>/dev/null | head
?如果写入stdout返回错误,我尝试过
go run test.go | head 2>/dev/null
,然后退出应用程序。仅当与
|head
一起使用时,它才会返回
信号:断管
行。如何捕捉错误?就像围棋中的其他错误一样捕捉错误。向我们显示要测试的源代码。如果不确定要做什么,请转到。
a.exe|b.exe|c.exe|d.exe